2013-01-21 65 views
2

所以我有一个图片上传脚本之前。 它上传图像并将其保存到服务器上的空间。 我似乎什么不能左右我的头是说,当用户上传.png文件,由我希望它是一个JPG它保存在我的服务器上的时间。转换在上传保存在服务器上PNG/GIF为JPG

任何人都可以帮助解决这个问题,请不要只是指导我另一个问题,因为我还没有任何工作。这是我的代码的一个例子。

$name = addslashes($_FILES['image']['name']); 
$ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION); 
$size = $_FILES['image']['size']; 
$temp = $_FILES ['image']['tmp_name']; 
$error = $_FILES ['image']['error']; 

if ($error > 0) 
    die("Error uploading file! Code $error."); 
else 


if ($password == "" || $size > 2000000) { 
    move_uploaded_file($temp, $images.$name); 
    mysql_query("INSERT INTO image_approval VALUES ('','$description','','$images$name','',NOW())"); 

    echo "Upload complete!"; 
    }else{ 
echo "Error uploading file"; 
    } 
+0

你要 '拯救'(在临时)它再转换 – 2013-01-21 01:38:49

+0

我看到2 “{” 和3 “}”。 –

+0

还有什么我的意思是,我对我会怎么做,不确定... 纳比勒 - 我必须错过了,从实际代码砍倒它时,它工作正常,刚才,只是不能转换 –

回答

1

使用GD,并假设$images是您存储图像(结尾斜杠)的目录,然后$name - 原始图像的文件名:

$destinationPath = $images . basename($name, $ext) . '.jpg'; 
$source = imagecreatefrompng($images . $name); 
imagejpeg($source, $destinationPath, 75); 
imagedestroy($source); 

或者与Imagick

$image = new Imagick($images . $name); 
$image->writeImage($destinationPath); 
$image->destroy(); 
+0

我会只需在'move_uploaded_file'一行之后放置? –

+1

肯定的,但要确保该文件存在 –

+0

干杯的人,其凌晨2点后在这里,现在累了,只需要一推吧,哈哈。非常感激。 –

0

使用此功能可以转换上传的图片

// http://stackoverflow.com/a/1201823/358906 
// Quality is a number between 0 (best compression) and 100 (best quality) 
function png2jpg($originalFile, $outputFile, $quality) { 
    $image = imagecreatefrompng($originalFile); 
    imagejpeg($image, $outputFile, $quality); 
    imagedestroy($image); 
} 

然后用unlink()删除旧图像。

您的代码将是这样的:

// After the upload 
png2jpg($the_jpg_file_path, $the_png_file_path, 80); 
unlink($the_jpg_file_path); 
相关问题