Как преобразовать png в jpg?

$image = imagecreatefrompng($filePath);
$bg = imagecreatetruecolor(imagesx($image), imagesy($image));
imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255));
imagealphablending($bg, TRUE);
imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
imagedestroy($image);
$quality = 50; // 0 = worst / smaller file, 100 = better / bigger file 
imagejpeg($bg, $filePath . ".jpg", $quality);
imagedestroy($bg);


Везде вот такой пример, но он не конвертирует по настоящему, и если открыть этот файл в каком нибудь редакторе он предлагает его переименовать в png т.к. не верное разрешение

А если попробовать открыть файл функцией imagecreatefromjpeg() то она пишет
Warning: imagecreatefromjpeg(): gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0x89 0x50 in imgmaker.php on line 33
Warning: imagecreatefromjpeg(): 'upload/RGB.jpg' is not a valid JPEG file in mgmaker.php on line 33

Странно что в инете не нашёл жалоб на это.
  • Вопрос задан
  • 691 просмотр
Решения вопроса 2
mosesfender
@mosesfender
Меланхолик, параноик, падал с коек
В смысле расширение неверное? Изображение JPEG же? При чём тут расширение файла. Изображение может быть с каким угодно расширением, его тип определяется в первых нескольких байтах файла.
Например, если открыть любым HEX-редактором картинку PNG, то увидим:
5de49ae78193d431699881.png
Для JPEG будет примерно так:
5de49b0a7e064608267295.png

При этом расширение может быть каким угодно.

Что касается кода, то я не вижу в нём проблемы, JPEG сохраняется.
Ответ написан
Комментировать
@SoFuWa Автор вопроса
Ошибка в коде была
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы