Заставить 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?

2 ответа

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

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

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

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

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

Другие вопросы по тегам