Pull to refresh

Конвертируем изображения в консоли

image

Наверняка многим приходилось сталкиваться с обработкой больших массивов изображений. Поменять формат, уменьшить размер и т. д. Естественно руками всё это делать слишком долго. Так случилось, что передо мной легла задача конвертировать около 12000 изображений из TIFF в PNG, поскольку файлы в ближайшее время необходимо было выложить для просмотра на сайте, а пытки google не дали готовых результатов.

Естественно ручной вариант отбрасывался сразу. В поисках решения были также отклонены платные программы с графическим интерфейсом. Осложняло задачу и то, что сканы эти валялись в перемешку с CSV и многими другими файлами. В результате я решил пользоваться стандартной в моей Ubuntu 10.04 утилитой convert и за полчаса был набросан следующий скрипт:

find -name "*.tif" | while read f; do convert "$f" "${f%.*}.png"; rm -f "$f"; done

Который, выполняясь в необходимой директории, конвертировал все нужные файлы, в том числе и в подкаталогах, в png и удалял исходные TIF'ы. Довольный собой, сказал об этом начальнику и узнал… что сервер с изображениями крутится под Windows Server 2003.

Несколько обескураженный (сижу под линуксами с 15 лет) начал вспоминать как в колледже на первом курсе нас учили писать батники и искать аналогичную утилиту под Windows. Первое что мне попалось — тот же самый, но уже виндовый ImageMagick'овский convert напрочь отказывался работать с TIF — утверждал, что файл невозможно открыть, ругался на BLOB'ы, а времени на разбирательства не было. Следующим оказалась утилита GraphicsMagick. Из-за схожести названия сперва полагал, что будет происходить та же самая ошибка — однако же всё заработало прекрасным образом. За некоторое время написал и команду, производящую те же самые действия, что и предыдущий скрипт, но уже под Windows:

for /r %1 in (*.tif) do gm convert ^"%~dpnx1^" ^"%~dpn1.png^" & erase /f /q ^"%1^"

Вообще GraphicsMagick, как и ImageMagick работает со многими форматами (по ссылке кстати неплохое руководство по использованию), в скриптах достаточно поменять tif на формат уже имеющихся изображений, а png на необходимый.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.