Библиотека ImageMagick применяется практически в любом Web-приложении (на языке Ruby) для обработки и композитинга изображений, рисования различных графических примитивов, и так далее.
Если говорить о применении этой библиотеки в экосистеме Ruby, то сразу на ум приходит гем RMagick, который мало того, что имеет просто невероятно неудобное API, так его использование обходится дороже, чем тупой фоновый запуск отдельных программ, входящих в пакет ImageMagick. Плюс, иногда его требовательность к версиям установленных в системе библиотек способна поразить даже самых лояльных разработчиков.
Ясен перец, что порой возникают задачи, где вся такая мощь и тяжесть ImageMagick не требуется и можно обойтись более гуманными средствами.
Думаю, большинству PHP-разработчиков хорошо знакома достаточно милая библиотека GD2. Среди Ruby-разработчиков она не пользуется большой популярностью, и это весьма грустно, ведь она способна достойно решать основные задачи работы с растровой графикой.
Существует гем gd2-ffij. Последняя его версия вышла в 2010 году, но осмотр кода показал, что развитие библиотеки остановилось отнюдь не потому, что всё очень плачевно. Дело в том, что требуемые от библиотеки задачи решены в необходимом и достаточном виде.
Легко показать, что вывести какое-нибудь изображение с помощью GD2 не так уж тяжело. Я тут накидал простенькое приложение на Sinatra, которое рисует очень красивые и приятные глазу QR-коды с заданным текстом: https://github.com/eveel/quoreux :)
Код, который рендерит и сохраняет результирующее изображение выглядит достаточно неплохо:
image.draw do |canvas|
qr.modules.each_index do |y|
qr.modules.each_index do |x|
canvas.color = qr.is_dark(y, x) ? dark : bright
canvas.rectangle(x * settings.cell_width,
y * settings.cell_width,
(x + 1) * settings.cell_width,
(y + 1) * settings.cell_width, true)
end
end
image.export image_path
end
Результат работы всего приложения выглядит примерно так:

Как видно, задача решена легко, с минимальными затратами ресурсов системы и человеческого времени, а значит, что иногда лучше думать, чем хвататься за ImageMagick.
Меня огорчает лишь слабая поддержка GD2 со стороны Ruby-сообщества. Интересно, с чем это связано?