ImageMagick: Медленная конвертация TIFF в другие форматы

В процессе работы над различного рода проектами очень часто приходится прибегать в различным пакетным методам обработки изображений. При разработке одного стороннего заказа я столкнулся с одной очень странной и не очень приятной проблемой — при попытке конвертировать множество изображений формата TIFF в другие форматы, в моем случае — в PNG, процесс конвертации по какой-то причине заметно отличается скоростью от подобных преобразований из того же JPG при прочих равных.

Конвертация одного TIFF размером около 1500х1500 с одновременным уменьшением до 35% и сохранением в PNG занимает от 5 до 10 секунд на не самом слабом виртуальном сервере. При этом JPG того же размера конвертируется менее чем за секунду.

Решение проблемы оказалось лежало на поверхности — это пакет GraphicsMagick. Это форк ImageMagick c 2002 года, развивается самостоятельно и имеет множество оптимизаций. Командно он практически полностью совместим с IM, поэтому переписывать уже готовые скрипты не понадобится (правда есть пара параметров, которые есть в IM, но отсутствуют в GM, например —quiet, но это несущественно).

После замены ImageMagick на GraphicsMagick скорость обработки TIFF и конвертации из в PNG возросля почти в пять (!) раз! И это не преувеличение, действительно сейчас конвертация не длится больше 3х секунд на самых увесистых tiff-ах.

Пакет можно самостоятельно скомпилировать, взяв исходники с официального сайта. Для пользователей ubuntu и похожих систем можно установить из их репозиториев:

sudo apt update
sudo apt install graphicsmagick

Далее достаточно везде, где вы вызываете

convert ... ...

добавить gm перед convert (или другими утилитами пакета ImageMagick):

gm convert ... ...

Метки: , , , , , ,