Недавно я обнаружил jpegtran - инструмент, который может без потерь оптимизировать jpeg-файлы. Это инструмент командной строки, который может выполнять множество операций без потерь в jpegs в зависимости от предоставленных флагов. В этом случае представляющие интерес флаги -оптимизируются, -копии нет и -прогрессивные. Первый оптимизирует jpeg путем оптимизации таблиц Huffman, второй - для всех метаданных, а третий создает прогрессивную jpeg, которая позволяет браузерам отображать более качественную версию файла до загрузки всего файла.Windows batch - получение наименьшего размера файла с помощью jpegtran
Получение минимально возможного размера файла с помощью jpegtran не так просто, как может показаться на первый взгляд. Разумеется, прогрессивные jpegs должны быть больше, поскольку в случае переплетения gifs и png (которые, хотя и не такие же, как прогрессивные jpgs достигают аналогичной цели), всегда приводят к большему размеру файла, однако это не относится к прогрессивным jpegs , Я сделал несколько тестов и исследовал проблему в Интернете, и кажется, что невозможно определить, будет ли данный jpeg меньше при сохранении в качестве базовой линии (-оптимизации) или прогрессивной (-прогрессивной). Я также тестировал использование обоих флагов, но размер файла при использовании флагов -optimize и -progressive такой же, как при использовании только -стратегического флага.
Моя цель - оптимизировать несколько папок с сотнями jpegs в каждом из них. Поскольку такой пакетный скрипт кажется очевидным решением. К сожалению, у меня нет большого опыта работы с пакетными сценариями, и поэтому я решил искать один онлайн. Я нашел пару, но это один я решил пойти с первоначально (http://blog.stationfour.com/automating-png-jpg-image-optimization-in-windows/):
@echo none
cd %1
md "%~1\OptimizedJPEGS"
for %%i in (*.jpg) do "C:\Program Files\Image Optimization\jpegtran.exe" -optimize -copy none "%%i" "%~1\OptimizedJPEGS\%%i"
move /Y "%~1\OptimizedJPEGS\*.*" "%~1"
for %%i in (*.jpeg) do "C:\Program Files\Image Optimization\jpegtran.exe" -optimize -copy none "%%i" "%~1\OptimizedJPEGS\%%i"
move /Y "%~1\OptimizedJPEGS\*.*" "%~1"
rd "%~1\OptimizedJPEGS"
я изменить код, удалив прогрессивный флаг и добавив еще один цикл также оптимизировать файлы с расширением .jpeg (исходный скрипт только оптимизировал файлы с расширением .jpg).
Проблема, с которой я столкнулся сейчас, заключается в том, как написать скрипт, который сохранит каждый jpeg в целевом каталоге с -оптимизированными и -progressive флажками отдельно и сохранит только версию с меньшим размером файла. Я предполагаю, что главный вопрос заключается в том, можно ли это сделать в рамках одного сценария или должен быть один скрипт для сохранения файлов, а другой - для выбора версии.