Для пересылки по электронной почте мне понадобилось оптимизировать размер некоторого количества jpeg-файлов.
В ubuntu linux сделать это можно с помощью утилиты jpegoptim. Она позволяет как оптимизировать размер без потери качества, так и с потерей качества, указав его необходимый уровень.
Устанавливаем:
sudo apt-get install jpegoptim
Проверяем, насколько можно сжать файл:
jpegoptim -n file.jpg
Сжимаем один файл без потери качества:
jpegoptim file.jpg
Утилита сожмет и перезапишет файл. Если сжимать дальше уже невозможно, то файл будет пропущен.
Можно избежать перезаписи исходного файла, указав директорию для сохранения оптимизированных файлов:
jpegoptim -d ./optimized file.jpg
Сохранить аттрибуты файла (дата/время создания файла) можно, указав опцию -p:
jpegoptim -d ./optimized -p file.jpg
Сжать файл с потерей качества можно, указав опцию -mNN:
jpegoptim -m50 file.jpg
В результате файл будет оптимизирован по размеру с 50% потерей качества.
Оптимизировать по размеру все файлы jpg в папке можно с помощью однострочного цикла:
for i in *.jpg; do jpegoptim -d ./compressed -p "$i" ; done
Рекурсивно:
find /home/valusik/Изображения/ -type f -iname *.jpg -exec jpegoptim -p --all-progressive {} +