Инструменты для оптимизации JPEG? [закрыто]

114

Знаете ли вы какие-либо инструменты (предпочтительно командную строку) для автоматической оптимизации JPEG без потерь, которые я мог бы интегрировать в нашу среду сборки? Для PNG я сейчас использую PNGOUT , и он обычно экономит около 40% полосы пропускания / размера изображения.

По крайней мере, мне нужен инструмент, который может удалять метаданные из файлов JPG - я заметил странный случай, когда я пытался сделать эскиз из фотографии, но не смог получить его меньше 34 кБ. После дополнительных исследований я обнаружил, что данные EXIF ​​все еще были частью изображения, а миниатюра была 3 КБ после удаления метаданных.

И кроме того - возможно ли дальнейшая оптимизация JPG без потерь? Оптимизатор PNG пробует различные стратегии сжатия, случайную инициализацию кодировки Хаффмана и т. Д.

Я знаю, что большая часть экономии достигается за счет параметра качества JPEG, и это довольно субъективный показатель. Я ищу только инструмент, который можно запустить на этапе сборки и который без потерь выжимает из изображений несколько байтов.

chris166
источник
Вы говорите, что до удаления EXIF ​​в оптимизированном JPG было около 10 КБ EXIF?!?!?! Интересно, что в нем!
netrox
Это был весь блок EXIF ​​цифровой камеры, включая каждую мелочь об этой фотографии (выдержка, время срабатывания затвора и т. Д.)
chris166
@netrox chris166 Эти детали не занимают много места, много места занимает предварительный просмотр (двоичные данные).
Ariel
1
Две интересные сравнительные статьи, в которых перечисляются перечисленные ниже утилиты: Сравнение инструментов сжатия без потерь JPEG, июнь 2014 г . ; JPEG инструменты оптимизации тестов, февраль 2013 .
dma_k
@Ariel: Профиль ICC тоже обычно занимает много места. Я видел более 500 КБ двоичных данных профиля ICC.
saurabheights

Ответы:

68

Я использую libjpeg для операций без потерь. Он содержит инструмент командной строки jpegtran, который может делать все, что вы хотите. С помощью параметра командной строки -copy noneвсе метаданные -optimizeудаляются и выполняется оптимизация сжатия Хаффмана без потерь. Вы также можете преобразовать изображения в прогрессивный режим с помощью -progressive, но это может вызвать проблемы совместимости (кто-нибудь знает об этом больше?)

OutOfMemory
источник
5
Вау, звучит многообещающе. Если кому-то интересно, загрузка для Windows находится на gnuwin32.sourceforge.net/packages/jpeg.htm
chris166,
Я собираюсь это сделать. Это уменьшает мое фоновое изображение с 62 КБ до 49 КБ в прогрессивном режиме. Другое изображение (27 КБ) уменьшено до 23 КБ. Это 15-20% экономии без потери качества!
chris166,
2
прогрессивный отлично работает практически во всем, единственный недостаток - он использует больше процессора для декодирования (недостаточно дополнительных, чтобы иметь значение).
Ariel
1
прогрессивная развертка часто может быть больше базовой для файлов размером менее 9 КБ
Коллин Андерсон
3
Прогрессивному формату требуется гораздо больше памяти для декодирования. Обычные jpeg-файлы можно транслировать: вам нужно декодировать только небольшими фрагментами. Чтобы декодировать прогрессивный jpg, вам нужно сохранить в памяти все распакованное изображение сразу.
jcupitt 07
72

Я написал GUI для всех инструментов оптимизации изображений я смог найти , в том числе MozJPEG и jpegoptimкоторые оптимизируют таблицы Хаффмана, прогрессивные разверток, а также ( в случае необходимости) удалений невидимых метаданных.

ImageOptim разбивает это

Если у вас нет Mac, у меня также есть базовый веб-интерфейс, который работает на любой платформе.

Корнель
источник
5
Превосходно! Вам, сэр, нужна кнопка Flattr. Или присоединяйтесь к Gittip.
Thilo
2
ImageOptim и ImageAlpha великолепны!
Jon z
Отличный инструмент - незначительное предложение. Зачем ограничивать JPEGoptim качеством 80% - для больших фоновых изображений часто требуется 60% или даже ниже. thx
niico 05
зачем удалять данные EXIF? : /
Adrien Be
@AdrienBe 1. Конфиденциальность. Возможно, вы не хотите, чтобы все в сети знали ваше местоположение по GPS. 2. Потому что в файлах, сохраненных из Photoshop, могут быть мегабайты XML-мусора, встроенного в файлы.
Kornel
12

[ТОЛЬКО WINDOWS]

RIOT (инструмент радикальной оптимизации изображений) Это лучший инструмент для оптимизации изображений, который я нашел!

http://luci.criosweb.ro/riot/

Вы можете легко уменьшить изображение размером 10 МБ до 800 КБ с помощью субдискретизации. Он поддерживает PNG, GIF и JPEG. Он даже интегрируется в контекстные меню, так что вы можете отправлять изображения прямо туда. Позволяет вращать, изменять размер, сжимать до указанных КБ и т. Д. Также есть плагины для GIMP и IrfanView и прочего.

Также доступна библиотека DLL, если вы хотите включить ее в свои собственные программы или программу java script / c ++.

Другой альтернативой является http://pnggauntlet.com/. PNGGAUNTLET занимает вечность, но выполняет довольно хорошую работу.

[ТОЛЬКО WINDOWS]

Бен
источник
7
Предупреждение: RIOT выглядит неплохо, но он устанавливает TuneUp и все такое, не спрашивая вас, .. Я бы классифицировал это как вредоносное ПО.
Дэниел В.
1
@DanFromGermany прав. См. Обзоры здесь: download.cnet.com/RIOT/3000-12511_4-10911908.html#summaryList
RNickMcCandless
1
До недавнего времени этого не было.
Бен
Предупреждение о вредоносном ПО! Диспетчер загрузок Chrome предупреждает, что RIOT является вредоносным ПО
ruhong
8
К вашему сведению: для RIOT существует переносимый файл .zip, который не содержит вредоносных программ или установщиков любого типа. Просто прокрутите страницу их загрузок вниз. luci.criosweb.ro/riot/download
Goyuix
12

Новый сервис под названием JPEGmini дает невероятные результаты. Жаль, что это только онлайн. Изменить : теперь он доступен для Windows и Mac

Эдуардо Молтени
источник
Теперь у нас есть приложение для Mac (раскрытие информации: я в команде разработчиков)
DanJ
4
Не знаю, автор вы или нет, но это приложение вводит пользователей в заблуждение. Если вы запустите jpegquality.c на их «мини-изображениях» для определения степени сжатия, а затем сжимаете оригиналы с помощью imagemagick с таким же качеством => вы получите те же результаты, одинаковые артефакты JPEG в обоих изображениях. Imagemagick может быть с открытым исходным кодом, но это не означает, что его можно использовать, а затем заявлять, что вы разработали новую технологию сжатия
хорошая задница
@onetrickpony: Я никак не связан с ними.
Эдуардо Молтени
@niceass Как вы узнали, что JPEGmini использует код ImageMagick? То, что коэффициент качества такой же, как и на выходе IM, не является доказательством. Я предполагаю, что они повторно сжимают изображение при уменьшении факторов качества, возможно, с небольшой фильтрацией и используют некоторую метрику качества, чтобы решить, когда остановиться.
коан
Я запустил последнюю версию JPEGmini на изображении, которое я ранее экспортировал из ImageMagick, и было сообщено, что JPEGmini уже был запущен на нем, чего я не помню. Запуск jpegtran -optimize -copy none для того же изображения уменьшил размер на 12 КБ.
коан
10

Пробовал ряд предложений выше - лично я был после сжатия без потерь.

Мой образец изображения имел исходный размер 67 737 байт.

Используя kraken.io, он упал до 64 718. Используя jpegtran, он упал до 64 718. Используя yahoo smush-it, он снизился до 61 746. Используя imagemagick (-strip), он снизился до 65 312

Вариант smush.py выглядит многообещающим, но установка была слишком сложной, чтобы я мог ее быстро выполнить.

jpegrescan тоже выглядит многообещающим, но похоже на unix, и я использую окна

jpegmini НЕ без потерь, но я не могу сказать разницы (до 22 172)

Приложение Plinth Altrasoft jpegstripper не работает на моих Windows 7

jpegoptim - это не окна - мне это не подходит

Riot (сохраняя качество на уровне 100%) снизил его до 63416, а с высокой подвыборкой цветности он снизил его до 61912 - я не знаю, без потерь это или нет, и я думаю, что он выглядит легче, чем оригинал. ,

Итак, мой вердикт - yahoo smushit, если он должен быть без потерь

Грэм Батчер
источник
jpegrescan работает в Windows, если вы упрямы. Он уменьшает размер как по волшебству (5-15% без потери качества), что удивительно, потому что он просто переупорядочивает прогрессивную развертку, упорядочивая AFAIK (вы можете заметить то же самое в других программах, файлы иногда становятся немного меньше в Photoshop. если выбрать другое количество сканирований без видимой причины). Кроме того, его сделал один из разработчиков x264, он вундеркинд в области сжатия.
Камило Мартин,
9

Я бы попробовал Imagemagick. Он имеет множество параметров командной строки, он бесплатный и имеет хорошую лицензию. http://www.imagemagick.org

Кажется, есть опция под названием Strip, которая может вам помочь: http://www.imagemagick.org/script/command-line-options.php#strip

borjab
источник
Спасибо! Не знал, что ImageMagick может это сделать.
chris166,
7

ImageOptim действительно хорош. Опция командной строки, опубликованная автором, заполнит графический интерфейс и покажет прогресс. Я использовал jpegtran для оптимизации и преобразования в прогрессивный формат, затем ImageOptim для дальнейшей прогрессивной оптимизации и для других типов файлов.

Повторное использование кода сценария также можно найти на этом форуме (все файлы заменены на место):

jpegtran

for file in $(find $DIR -type f \( -name "*.jpg" -or -name "*.jpeg" -or -name "*.JPG" \)); do
    echo found $file for optimizing...
    jpegtran -copy comments -optimize -progressive -outfile $file $file
done

ImageOptim

for file in $(find $DIR -type f \( -name "*.jpg" -or -name "*.png" -or -name "*.gif" \)); do
do
    echo found $file for optimizing...
    open -a ImageOptim.app $file
done
BSY-веб
источник
4

На всякий случай, я написал офлайн-версию Yahoo Smush.it. Он без потерь оптимизирует png, jpgs и gif (анимированные и статические):

http://github.com/thebeansgroup/smush.py

Тимми
источник
Работает нормально, но есть проблема со сжатием png :(
4

Вы можете использовать jpegoptim, который по умолчанию оптимизирует файлы jpeg без потерь. --strip-allОпция удаляет все дополнительные внедренный данные. Вы также можете указать режим с потерями с помощью--max переключателя, который полезен, когда у вас есть изображения, сохраненные с настройкой очень высокого качества, что не обязательно, например. веб-контент.

Вы получаете такую ​​же оптимизацию, как и с jpegtran (см. Ответ OutOfMemory), но jpegoptim не может сохранять в прогрессивные jpeg.

серо-голубой
источник
4

Я написал инструмент командной строки под названием picopt (похожий на ImageOptim), который использует внешние программы для оптимизации JPEG, PNG, GIFS, анимированных GIF-файлов и даже содержимого архива комиксов (CBR / CBZ).

Это подходит для использования с homebrew в системах OS X или Linux, где вы установили такие инструменты, как jpegrescan, jpegtran, optipng, gifsicle и т. Д.

https://github.com/ajslater/picopt

Эй Джей Слейтер
источник
Есть ли версия для Windows?
starbeamrainbowlabs
если вы можете установить его зависимости posix в среде Windows, такой как cygwin, это возможно. Однако вы будете первым, кто это попробуете.
AJ Slater
3

Я бы тоже рекомендовал ImageMagick . У него есть опция командной строки для удаления метаданных EXIF

mogrify -strip image.jpg

Есть много других инструментов, которые делают то же самое.

Что касается повторного сжатия JPEG, не делайте этого. Файлы JPEG изначально содержат потери, поэтому любая форма повторного сжатия только ухудшит качество изображения. Однако, если у вас есть изображения, закодированные без потерь, некоторые кодировщики работают лучше, чем другие. Я заметил, что файлы JPEG, созданные с помощью Photoshop, всегда выглядят лучше, чем при кодировании с помощью ImageMagick (несмотря на тот же размер файла) по сложным причинам . Более того (и это актуально для вас), я знаю, что по крайней мере Photoshop может сохранять файлы JPEG как оптимизированные, что означает, что они теряют совместимость с некоторыми вещами, которые вам, вероятно, не нужны, чтобы сэкономить пару КБ. Кроме того, убедитесь, что у вас нет встроенных цветовых профилей, и вы можете сэкономить еще пару КБ.

Дэвид Джонстон
источник
Интересный. Я всегда думал, что 90% качество одинаково для всех графических инструментов. Photoshop - единственный инструмент, который использует оптимизированные коэффициенты DCT?
chris166
1
Я думал, что 90% будут одинаковыми для разных инструментов, пока я не попробовал сохранить одни и те же изображения в Photoshop и Imagemagick. Я обнаружил, что около 70% в Save for Web в Photoshop создавали файлы, которые были примерно того же размера, что и 92% в Imagemagick, но файлы Photoshop были заметно лучшего качества. Я понятия не имею, как это делают другие инструменты.
Дэвид Джонстон,
Вы знаете, как выполнить удаление метаданных EXIF ​​с помощью PHP-версии ImageMagick?
Сонни,
@Sonny Не совсем, но эта функция может вас заинтересовать: php.net/manual/en/function.imagick-stripimage.php
Дэвид Джонстон
Спасибо, Дэвид, вот что я в итоге нашел. Вот моя тема: stackoverflow.com/questions/2540068
Сонни,
2

Я бы рекомендовал использовать http://kraken.io. Это сверхбыстрое веб-приложение, которое оптимизирует ваши файлы PNG и JPEG намного лучше, чем smush.it.

Pono
источник
2

Я рекомендую использовать JpegOptim, это бесплатно и действительно приятно, вы можете указать качество, размер, который хотите ... И прост в использовании в командной строке.

JpegOptim

agonist_
источник
1

Могу я порекомендовать это для почти прозрачности:

convert 'yourfile.png' ppm:- | jpeg-recompress -t 97 -q veryhigh -a -m smallfry -s -r -S disable - yourfile.jpg

Он использует ImageMagick «S convertи jpeg-recompressиз Jpeg-архива .

Оба имеют открытый исходный код и работают в Windows, Mac и Linux. Вы можете настроить параметры, указанные выше, в зависимости от требований к качеству.

Камило Мартин
источник