Я хочу сжать файл изображения JPG с ImageMagick, но не могу получить большую разницу в размере. По умолчанию размер вывода больше, чем вход. Я не знаю почему, но после добавления некоторых опций профиля + и установки качества я могу получить меньший размер, но все равно похожий на оригинальный.
Входное изображение - 255 КБ, обработанное изображение - 264 КБ (использование профиля + для удаления профилей и настройка качества на 70%). Можно ли хотя бы сжать это изображение до 150 КБ? Это возможно? Какие параметры ImageMagick я могу использовать?
image-processing
imagemagick
Хавис Перес
источник
источник
Ответы:
Я использую всегда:
в imagemagick должно быть
или в более новой версии:
надеюсь, что это будет полезно.
Ссылка на источник: http://www.yuiblog.com/blog/2008/12/05/imageopt-4/
От @Fordi в комментариях (если хотите, не забудьте поднять его комментарий): если вам не нравится размытие, используйте
-sampling-factor 4:2:0
вместо этого. Это уменьшает разрешение канала цветности наполовину, не мешая разрешению яркости, на которое смотрят ваши глаза. Если вы хотите повысить точность преобразования, вы можете получить небольшое улучшение без увеличения размера файла, указав-define jpeg:dct-method=float
- то есть, используйте более точное дискретное косинусное преобразование с плавающей запятой, а не версию по умолчанию с быстрым целым числом.источник
mogrify -strip -interlace Plane -gaussian-blur 0.05 -quality 85% *.jpg
. Убедитесь, что у вас есть резервная копия перед выполнением этой команды. Будет писать на месте.-strip
сделал это для меня. Спасибоmogrify -strip -quality 75% *.jpg
. Газа это здорово. 0 потеря качества и большая экономия места. А качество на 75% едва ли можно отличить от 100%, но занимает половину пространства.Я использую рекомендации по оптимизации изображений Google Pagespeed Insights , и для ImageMagick они рекомендуют следующее:
-sampling-factor 4: 2: 0
-strip -quality
85 [может варьироваться, я использую диапазон 60-80, меньшее число здесь означает меньший файл]
-interlace
-colorspace RGB
Команда в ImageMagick:
С этими опциями я получаю до 40% экономии в размере JPEG без особых видимых потерь.
источник
Просто скажу для тех, кто использует класс Imagick в PHP:
источник
Однажды мне нужно было изменить размер фотографий с камеры для разработки:
Команда:
и я не вижу никаких изменений в полноэкранном режиме с моим монитором с разрешением 1920x1080. Разрешение 2048 является лучшим для создания фотографий 10 см с максимальным качеством 360 точек на дюйм. Я не хочу раздеть это.
редактировать: я заметил, что я даже получаю гораздо лучшие результаты без размытия. Без размытия размер файла составляет 50% от исходного, но качество лучше (при масштабировании).
источник
Я бы добавил полезную заметку и общее предложение, чтобы минимизировать JPG и PNG.
Прежде всего, ImageMagick считывает (или лучше «угадает» ...) уровень сжатия входного JPEG-файла, и поэтому, если вы вообще не добавляете
-quality NN
, вывод должен использовать тот же уровень, что и входной. Иногда может быть важной особенностью. В противном случае уровень по умолчанию-quality 92
(см. Www.imagemagick.org )Предложение о действительно потрясающем бесплатном инструменте ImageOptim , также для пакетного процесса.
Вы можете получить меньшие jpgs (и pngs также, особенно после использования бесплатной ImageAlpha [не пакетный процесс] или бесплатной Pngyu, если вам нужен пакетный процесс).
Эти инструменты предназначены не только для Mac и Win, но и для командной строки (я предлагаю установить с помощью Brew, а затем искать в формулах Brew).
источник
Я добавил
-adaptive-resize 60%
к предложенной команде, но с-quality 60%
.Это были мои результаты
Я не уверен, что это преобразование слишком сильно разрушает мое изображение, но я, честно говоря, не думал, что мое преобразование выглядит как дерьмо. Это была широкоугольная панорама, и я не заботился о дотошной обструкции.
источник
Смотрите следующие ссылки, где в ImageMagick есть возможность указать желаемый размер выходного файла для записи в файлы JPG.
http://www.imagemagick.org/Usage/formats/#jpg_write http://www.imagemagick.org/script/command-line-options.php#define
-define jpeg:extent={size} As of IM v6.5.8-2 you can specify a maximum output filesize for the JPEG image. The size is specified with a suffix. For example "400kb".
Вы потеряете некоторое качество, распаковав и повторно сжимая в дополнение к любым потерям из-за понижения -качественного значения на входе.
источник
Я немного экспериментировал здесь, и мальчик делает то, что размытие по Гаусиу делает отличное. Последняя команда, которую я использовал, была:
mogrify * -сэмплинг-фактор 4: 2: 0 -полоса -качество 88-плоскость чередования -определить jpeg: dct-method = float -colorspace RGB -gaussian-blur 0,05
Без размытия по Гаузи при 0,05 оно составляло около 261 КБ, а с изображением, на котором я тестировал, оно составляло около 171 КБ. Визуальные различия на мониторе 1440p с большим сложным изображением не заметны, пока вы не приблизите изображение.
источник
Вот полное решение для тех, кто использует Imagick в PHP:
источник
Если изображение имеет большие размеры, трудно получить хорошие результаты без изменения размера, ниже приведено 60-процентное изменение размера, которое для большинства целей не разрушает слишком много изображения.
Я использую это с хорошим результатом для полутоновых изображений (я конвертирую из PNG):
Я использую это для отсканированных черно-белых страниц, чтобы получить их в полутоновых изображениях (дополнительные аргументы убирают тени с предыдущих страниц):
Я использую это для цветных изображений:
источник