Как преобразовать все изображения в формат JPG в PHP?

Я разрабатываю веб-сайт на PHP, который позволяет пользователю загружать изображения, а затем позволяет ему определять, как изображение должно использовать jQuery – целость PHP для выбора области, которая хотела быть изображением, а затем нажмите кнопку обрезки, чтобы обрезать ее и сохрани это.

Проблема, с которой я столкнулся, заключается в том, что не все типы изображений хороши для обрезки и сохранения, поэтому я заметил, что это простое решение для преобразования изображения в JPG, а затем позволяет пользователю обрезать его, потому что это простой способ сделать это в JPG.

Как я могу это сделать?

Является ли это лучшим решением проблемы с изображениями?

РЕДАКТИРОВАТЬ:

Я использую этот код для обрезки изображений, и он не виляет в формате PNG, а также ограничен 3 ext.

$path_parts = pathinfo("../images/DVDs/".$_POST['logo_file']); if ($path_parts['extension'] == "png") { $src = imagecreatefrompng("../images/DVDs/".$_POST['logo_file']); $tmp = imagecreatetruecolor(350, 494); imagecopyresampled($tmp, $src, 0,0,$_POST['x'],$_POST['y'],350,494,$_POST['w'],$_POST['h']); imagepng($tmp, "../images/DVDs/$filename".'t_'.$_POST['logo_file'],100); } else if ($path_parts['extension'] == "jpg" || $path_parts['extension'] == "jpeg") { $src = imagecreatefromjpeg("../images/DVDs/".$_POST['logo_file']); $tmp = imagecreatetruecolor(350, 494); imagecopyresampled($tmp, $src, 0,0,$_POST['x'],$_POST['y'],350,494,$_POST['w'],$_POST['h']); imagejpeg($tmp, "../images/DVDs/$filename".'t_'.$_POST['logo_file'],100); } else if ($path_parts['extension'] == "gif") { $src = imagecreatefromgif("../images/DVDs/".$_POST['logo_file']); $tmp = imagecreatetruecolor(350, 494); imagecopyresampled($tmp, $src, 0,0,$_POST['x'],$_POST['y'],350,494,$_POST['w'],$_POST['h']); imagegif($tmp, "../images/DVDs/$filename".'t_'.$_POST['logo_file'],100); } 

Я хочу конвертировать изображения в формат JPG, потому что это проще всего конвертировать без каких-либо проблем.

Solutions Collecting From Web of "Как преобразовать все изображения в формат JPG в PHP?"

Возможно, он не работает с PNG, потому что PNG поддерживает только уровни сжатия от 0 до 9.

Я также предпочел бы изменить поведение, основанное на типе MIME, а не на расширении. И я думаю, вы проверяете свой пользовательский ввод POST, прежде чем использовать его в коде;)

Вот мой вариант кода:

 $path = "../images/DVDs/"; $img = $path . $_POST['logo_file']; if (($img_info = getimagesize($img)) === FALSE) die("Image not found or not an image"); switch ($img_info[2]) { case IMAGETYPE_GIF : $src = imagecreatefromgif($img); break; case IMAGETYPE_JPEG : $src = imagecreatefromjpeg($img); break; case IMAGETYPE_PNG : $src = imagecreatefrompng($img); break; default : die("Unknown filetype"); } $tmp = imagecreatetruecolor(350, 494); imagecopyresampled($tmp, $src, 0, 0, intval($_POST['x']), intval($_POST['y']), 350, 494, intval($_POST['w']), intval($_POST['h'])); $thumb = $path . pathinfo($img, PATHINFO_FILENAME) . "_thumb"; switch ($img_info[2]) { case IMAGETYPE_GIF : imagegif($tmp, $thumb . '.gif'); break; case IMAGETYPE_JPEG : imagejpeg($tmp, $thumb . '.jpg', 100); break; case IMAGETYPE_PNG : imagepng($tmp, $thumb . '.png', 9); break; default : die("Unknown filetype"); } 

Для каждого поддерживаемого типа файлов вам нужно добавить только две строки кода.