конвертирование ВО ВРЕМЯ загрузки перед сохранением на сервере png / gif в jpg

Поэтому у меня есть сценарий загрузки изображений. Он загружает изображение и сохраняет его в пространстве на сервере. То, что я, похоже, не могу придумать, это сказать, когда пользователь загружает .png, к тому времени, когда он сэкономит на моем сервере, я хочу, чтобы он был 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"; } 

Используя 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(); 

Используйте эту функцию для преобразования загруженного изображения

 // 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);