2013-01-21 62 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); 
相關問題