• Linux scripts mydropbox Однострочник, который пережимает все jpeg'и без потери качества (lossless по-нашему):
    find . -iname \.jpeg -o -iname \.jpg -type f -print -execdir jpegtran -perfect -copy all -progressive -optimize -outfile temp.jpeg '{}' \; -execdir mv temp.jpeg '{}' \;
    jpegtran идёт в пакете libjpeg. Параметр -progressive заставляет создавать т.н. прогрессивные jpeg'и. Это когда сначала загружается мазня, потом появляются контуры, потом видно уже лицо, а потом уже и вся картинка. На тестовых прогонах удавалось получить сокращения размера на 5-10%, в редких случаях до 20%.
    Дополнительно из фоточек (т.е. jpeg'ов с exif-данными) можно удалить бесполезные миниатюры и выставить отметку времени файла по времени в exif (переведите часы на ваших мыльницах!). Для этого пригодна годная команда jhead:
    find . -iname \.jpeg -o -iname \.jpg -type f -print -execdir jhead -dt -autorot -ft {} \;
    -dt удаляет миниатюры, -ft выставляет время файла, -autorot поворачивает фоточки, согласно тегу ориентация (покупайте мыльницы с акселерометром!).
    По мотивам braingears.ru

Replies (5)

  • @rwarrior, первый раз, что жпег можно сохранять без потери качества. наверное, вы некорретно выразились?
  • @leksey, Да нет, я всё корректно выразил. Только не сохранять jpeg, а оптимизировать размер уже существующих. Как нам говорит man jpegtran, Perform optimization of entropy encoding parameters. По ссылке в посте есть проверка на потерю качества.
  • @rwarrior, прочитал исходник. но какой-то подвох. переделывает в прогрессивный и при этом не пережимаем да еще экономим место. какая-то фантастика
  • @leksey, Да не, никакой фантастики и подвоха. Этот как gzip -1 и gzip -9. Я даже озадачен твоим непониманием.
  • @rwarrior, а. после этого сранвнения понял. только вот сомнения, что progressive меньше. когда-то экспериментировал, не было такого различия