У меня есть сомнения. Есть ли проблема, если я заставляю imagejpeg сохранять файл .png? Как и в этом примере:Force imagejpeg to .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?
Нет особых проблем с сохранением JPEG с расширением 'png', но почему бы просто не использовать расширение' jpg' вместо этого? Просто добавив другое расширение файла, вы не измените тип файла, который вы создаете. – iainn
Использование imagejpeg всегда делает файл JPEG - даже если вы назовете его blabla.doc. Размер намного меньше из-за низкого качества. –
Проблема PNG может быть сжата настолько сильно из-за специфики формата. Если вам нужен меньший размер, вам нужно использовать JPEG со всем, что подразумевается. – apokryfos