Інструменти для оптимізації JPEG? [зачинено]


114

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

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

І крім цього - чи можна додатково оптимізувати JPG без втрат? Оптимізатор PNG пробує різні стратегії стиснення, випадкову ініціалізацію кодування Huffmann тощо.

Я усвідомлюю, що більшість заощаджень відбувається за допомогою параметра якості JPEG і що це досить суб'єктивний захід. Я шукаю лише інструмент, який можна запустити як етап складання, який без втрат видавить кілька байт із зображень.


Ви говорите, що EXIF ​​в оптимізованому JPG коштував приблизно 10 КБ, перш ніж EXIF ​​був видалений?!?!?! Цікаво, що в ньому!
netrox

Це був увесь блок EXIF ​​з цифрової камери, включаючи кожну дрібницю про цю фотографію (експозиція, час затвора тощо)
chris166

@netrox chris166 Ці деталі не займають багато місця, а це займає багато місця - попередні перегляди (двійкові дані).
Аріель


@Ariel: профіль ICC також займає багато місця. Я бачив понад 500 КБ бінарних даних профілю ICC.
saurabheights

Відповіді:


68

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


5
Нічого собі, це звучить багатообіцяюче. Якщо когось цікавить, завантаження для Windows знаходиться за адресою gnuwin32.sourceforge.net/packages/jpeg.htm
chris166

Я йду за цим. Це зменшує моє фонове зображення з 62 кБ до 49 кБ в прогресивному режимі. Інше зображення (27 кБ) було зменшено до 23 кБ. Це економія 15-20% без втрати якості!
chris166

2
Прогресивний працює в основному в усьому, єдиний недолік - це те, що він використовує більше процесора для декодування (недостатньо зайвих для матерії).
Аріель

1
прогресивний часто може бути більшим за базовий для файлів менше 9 к.
Колін Андерсон

3
Прогресивному потрібно дедалі більше пам'яті. Регулярні jpegs можуть бути потоковими: розшифрувати потрібно лише невеликими розділами. Щоб розшифрувати прогресивний jpg, вам потрібно потримати весь декомпресований образ відразу в пам'яті.
jcupitt

72

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

ImageOptim розминаючи його

Якщо у вас немає Mac, у мене також є базовий веб-інтерфейс, який працює на будь-якій платформі.


5
Відмінно! Вам, пане, потрібна кнопка Flattr. Або приєднайтесь до Gittip.
Тіло

2
ImageOptim та ImageAlpha - чудові!
Jon z

Прекрасний інструмент - незначна пропозиція. Навіщо обмежувати якість JPEGoptim на 80% - великі фонові зображення часто хочете перейти на 60% або навіть нижче. thx
niico

чому видаляти дані EXIF? : /
Adrien Be

@AdrienBe 1. Конфіденційність. Можливо, ви не хочете, щоб усі в мережі знали ваше GPS-місцезнаходження. 2. тому що у файлах, збережених з Photoshop, можуть бути мегабайти сміття XML, вбудовані у файли.
Корнель

12

[ТІЛЬКИ ВІКНИ]

RIOT (Інструмент радикальної оптимізації зображень) Це найбільший інструмент для оптимізації зображень, який я знайшов!

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

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

Існує також DLL, якщо ви хочете включити її у власні програми або java script / c ++.

Ще одна альтернатива - http://pnggauntlet.com/ PNGGAUNTLET займає назавжди, але це робить досить непогану роботу.

[ТІЛЬКИ ВІКНИ]


7
Попередження: RIOT виглядає добре, але він встановлює TuneUp і лайно, не запитуючи вас, .. Я б класифікував це як зловмисне програмне забезпечення.
Даніель В.

1
@DanFromGermany має рацію. Дивіться огляди тут: download.cnet.com/RIOT/3000-12511_4-10911908.html#summaryList
RNickMcCandless

1
Це ніколи до недавнього часу.
Бен

Попередження про зловмисне програмне забезпечення! Менеджер завантажень Chrome попереджає, що RIOT - це зловмисне програмне забезпечення
ruhong

8
FYI: Існує портативний .zip файл для RIOT, який не містить зловмисного програмного забезпечення або будь-якого інсталятора. Просто прокрутіть униз на сторінці завантажень. luci.criosweb.ro/riot/download
Goyuix

12

Нова послуга під назвою JPEGmini дає неймовірні результати. Прикро, що це лише в Інтернеті. Редагувати : доступно для Windows та Mac зараз


Зараз у нас є додаток для Mac (розкриття: Я в команді розробників)
DanJ

4
Я не знаю, ви автор чи ні, але ця програма вводить користувачів в оману. Якщо ви запускаєте jpegquality.c на їх "міні" зображеннях для виявлення кількості стиснення, а потім стискаєте оригінали за допомогою immagemagick однакової якості => ви отримуєте однакові результати, однакові артефакти JPEG в обох зображеннях. Imagemagick може бути з відкритим кодом, але це не дає змоги ним користуватися, а потім стверджувати, що ви розробили нову технологію стиснення
приємна дупа

@onetrickpony: Я жодним чином не пов'язаний з ними.
Едуардо Молтені

@niceass Як ви знаєте, що JPEGmini використовує код ImageMagick? Знання коефіцієнта якості те саме, що вихід із ІМ не є доказом. Я здогадуюсь, що вони повторно стискають зображення, зменшуючи коефіцієнти якості, можливо, маючи трохи фільтрації, і вони використовують деякий показник якості, щоб вирішити, коли зупинити.
коан

Я запустив останні JPEGmini по зображенню, яке раніше експортували з ImageMagick, і повідомлялося, що JPEGmini вже був запущений на ньому - чого я не пам'ятаю робити. Запуск jpegtran -optimize -копіювати жодне зображення на одне і те ж зображення зменшив розмір на 12 Кб.
коан

10

Спробував ряд запропонованих вище пропозицій - я особисто був після стиснення без втрат.

Моє зразкове зображення мало оригінальний розмір 67 737 байт.

Використовуючи kraken.io, він знизився до 64 718 За допомогою jpegtran він знизився до 64 718 За допомогою yahoo smush-it, він знизився до 61 746, використовуючи imagemagick (-strip), він знизився до 65 312

Параметр smush.py виглядає багатообіцяючим, але установка була занадто складною для мене, щоб зробити це швидко

jpegrescan також виглядає багатообіцяюче, але, здається, Unix, і я використовую Windows

jpegmini НЕ втрачає, але я не можу визначити різницю (до 22,172)

Додаток Altrasoft jpegstripper з цоколя не працює на моїх Windows 7

jpegoptim - це не вікна - для мене немає користі

Riot (зберігаючи якість на 100%) знизив його до 63,416, а підсистема кольоровості піднялася на високу, вона знизилася до 61 912 - я не знаю, чи це без втрат, чи ні, і я думаю, що це виглядає легше, ніж оригінал .

Тож мій вердикт - 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


Дякую! Я не знав, що 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

4

У випадку, якщо хтось дивиться, я написав офлайн-версію Smhoo.it Yahoo. Це буде без втрат оптимізувати png, jpgs та gif (анімовані та статичні):

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


Він працює добре, але є проблема зі стисненням png :(

4

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

Ви отримуєте аналогічну оптимізацію, як і у jpegtran (див. Відповідь OutOfMemory), але jpegoptim не може зберегтись до прогресивних jpegs.


4

Я написав інструмент командного рядка під назвою "picopt" (подібний до ImageOptim), який використовує зовнішні програми для оптимізації JPEG, PNG, GIFS, анімованих GIFS і навіть вмісту архіву коміксів (CBR / CBZ).

Це підходить для використання з домашньою мовою в системах OS X або Linux, де ви встановили такі інструменти, як jpegrescan, jpegtran, optipng, gifsicle тощо.

https://github.com/ajslater/picopt


Чи існує версія Windows для цього?
starbeamrainbowlabs

якщо ви можете встановити його позикс-залежності в середовищі 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 in 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.


2

Я рекомендую використовувати JpegOptim, це безкоштовно і дуже приємно, ви можете вказати якість, розмір, який ви хочете ... І простий у використанні в командному рядку.

JpegOptim


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. Ви можете налаштувати вищевказані варіанти для різних очікувань щодо якості.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.