Я сомневаюсь. Есть ли проблема, если я заставлю 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?
Вы должны использовать imagepng()
вместо imagejpeg()
создать файл png.
Вы заставляете только имя файла созданного файла. Полученный файл будет jpg со всеми его свойствами. Вы не получите сжатый png-файл, если используете imagejpeg()
метод.
Вы должны понимать разницу обоих форматов. В то время как jpg является сжатым форматом, который теряет информацию об изображении при сжатии, png является форматом без потерь. У png также есть уровень сжатия, но поскольку информация об изображении не уничтожается, он будет больше в виде файла jpg.
Если вы используете imagepng($image, $filename, 9)
Вы получаете файл PNG с лучшим сжатием.