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 ... ...