Заставить imagejpeg в .png

Я сомневаюсь. Есть ли проблема, если я заставлю imagejpeg сохранить файл .png?
Как в этом примере:

imagejpeg($img,$_SERVER['DOCUMENT_ROOT']."/test.png",80);

Я хочу использовать этот метод, потому что я могу использовать $quality фильтр.
В этом методе у меня есть сохраненный файл .png размером около 25 КБ, но если я использую imagepng, мое изображение будет иметь размер около 200 КБ (я использовал уровень качества $ 0-9, но я не увидел никаких изменений, только -20 КБ) ,
Я не хочу ошибаться, потому что мой сайт генерирует .png изображения каждую секунду.

Способ 2
Я пытался сжать изображения .png с помощью pngquant, но я понятия не имею, как это сделать, когда я использую функцию imagepng.
Я пробовал что-то вроде этого, но это не работает, если я передаю изображение в функцию.

ob_start();
imagepng($img);
$png = ob_get_clean();
file_put_contents($_SERVER['DOCUMENT_ROOT']."/test.png", compress($png);

function compresss($img)
{
//...
}

В других случаях, если у меня есть $png = $_FILES['file']['tmp_name'] работает. Так есть ли способ сжатия с pngquant, или есть проблема, если я заставлю imagejpeg сохранить файл .png?

0

Решение

Вы должны использовать imagepng() вместо imagejpeg() создать файл png.

http://php.net/manual/fr/function.imagepng.php

1

Другие решения

Вы заставляете только имя файла созданного файла. Полученный файл будет jpg со всеми его свойствами. Вы не получите сжатый png-файл, если используете imagejpeg() метод.

Вы должны понимать разницу обоих форматов. В то время как jpg является сжатым форматом, который теряет информацию об изображении при сжатии, png является форматом без потерь. У png также есть уровень сжатия, но поскольку информация об изображении не уничтожается, он будет больше в виде файла jpg.

Если вы используете imagepng($image, $filename, 9) Вы получаете файл PNG с лучшим сжатием.

1

По вопросам рекламы [email protected]