Следующий сценарий должен создать изображение с более низким качеством и таким меньшим размером файла (kb), вместо этого он создает изображение с более низким качеством и большим размером файла.PHP GD imagejpeg: размер выходного файла больше размера, чем оригинал
На мой тест оригинал около 300Кб, используя качество 90% выход почти двойное и использование качества 100%, выход более 1Мб ...
<?php
$quality = 90;
$path = '/var/www/TEST/';
$inputSrc = $path . 'original.jpg';
$outputSrc = $path . 'after' . $quality . '.jpg';
$handler = imagecreatefromjpeg($inputSrc);
imagejpeg($handler, $outputSrc, $quality);
Я предполагаю, что вопрос связанные с imagejpeg
плохая реализация ...
- Есть ли способ обхода этого?
ImageMagick
лучшее решение?
Благодаря
Update
мне было интересно, поэтому я дал попытаться ImageMagick
и, к сожалению, у меня есть аналогичный результат (чуть лучше).
Полные результаты тестов:
Оригинальный размер: 294.6Kb
- GD (imagejpeg) 90%: 581.7Kb
- GD (imagejpeg) 100%: 1.1Mb
- ImageMagick 90%: 431.7Kb
- ImageMagick 100%: 780.9kb
Update 2
Я сделал еще некоторое испытание с GIMP и выглядит, что для того, чтобы получить файл с очень похожим размером с оригиналом у вас есть для проверки опции use quality setting from original image
.
Теперь я смущен больше ... так как, когда я выбираю эту настройку, Gimp автоматически изменяет качество вывода на 74% (для примера изображения).
Я предполагал, что значение качества JPEG, если оно ниже 100%, уменьшает качество изображения на каждой итерации сохранения ... но я начинаю думать, что я здесь неправ.
Update 3
С ImageMagick
не нужно указать качество образца и, если оставить его пустым ImageMagick
будет использовать тот же качества обнаруженного во входном изображении.
Итак, для примера изображения обнаружено как качество 69, а outfile - 326kb. Это лучший результат.
Вот изображение Я использую:
Вы можете снизить качество jpeg с '90' до' 75' (или даже ниже), и если у вас есть доступ к ImageMagick, это замечательный инструмент! –
Согласившись с вышеприведенным комментарием, проблема связана с '90', это, вероятно, проблема. – Ohgodwhy
Давай, если я уменьшу качество изображения, я должен получить меньший размер файла .. и так же, если я использую 100 качеств, я должен получить одинаковый размер файла, вместо этого получаю изображение 4 раза больше – WonderLand