Библиотеки обработки изображений Ruby/Rails

Хорошие друзья stackoverflow, я здесь сегодня для руководства относительно обработки изображений/манипуляции с использованием Ruby в среде Rails. Я создаю динамические баннерные объявления "на лету", которые будут отображаться в основном (если не полностью). Это довольно просто с одной строкой или двумя, но мне бы хотелось настроить шрифт, цвет текста, размер текста и т.д.

Какие библиотеки вы рекомендуете для такого рода задач?

Я немного читал в rMagick, и я вижу много жалоб на проблемы с памятью и отсутствие функций рендеринга текста. Я не вижу много альтернативных активных проектов.

Спасибо!

Изменить: У меня появился шанс пообщаться с RMagick, и, хотя библиотека полностью заполнена, в текстовом отделе ее серьезно не хватает. Одна из возможностей, которую я не могу использовать, - это неразрывные пробелы. Я печатаю номер телефона в своем тексте, и действительно не имеет смысла иметь код области на другой строке, чем остальная часть номера.

Я выбираю RMagick как лучшее решение на данный момент, потому что оно полнофункционально и активно развивается, но это отнюдь не хорошее решение.

Ответы

Ответ 1

Я написал что-то вроде следующего:

require 'rubygems'
require 'RMagick'
include Magick

image = Image.new(50, 50) {
  self.background_color = "white"
}
text = Draw.new
text.annotate(image, 0,0,0,40, 'Named Colors') {
     self.fill = 'black'
     self.pointsize = 32
}
image.write("image.png")

Который должен быть достаточно легким, чтобы следовать. Также посмотрите документацию. Хотя он не совсем доведен до совершенства, он почти все там.

Ответ 2

Недавно я экспериментировал с созданием диаграмм/графиков из наборов данных с использованием Ruby. Когда я не смог найти какие-либо библиотеки или драгоценные камни, которые действительно делали то, что я хотел, я начал заниматься рисованием SVG, и я обнаружил, что их на самом деле довольно просто создать. Формат SVG - это просто текстовый XML. Я построил SVG-образ в Inkscape, сохранил его в простой SVG файл, а мой Ruby script использует этот файл в качестве шаблона (я динамически обновляю несколько элементов строки и несколько текстовых меток и оставляю структуру файла неповрежденной). SVG предоставляет вам всевозможные варианты шрифтов (например, CSS или HTML).

Эти два учебника дают вам быстрый посмотрите на SVG и как можно быстро создать изображение с помощью любого приложения или языка, который может писать в текстовый файл. Ruby может использовать простой старый puts для создания SVG файла, или вы можете позволить gem-builder сделать форматирование для вас.

Ответ 3

Вы можете обработать ваши потребности в обработке изображений в командной строке версии ImageMagick вместо использования привязок rMagick Ruby.

Ответ 4

Вы ограничены только MRI Ruby? Если вы каким-либо образом можете получить доступ к экземпляру jRuby (например, например, в стеке EC2), вы можете использовать замечательный Processing библиотека. Проект, над которым я работал раньше, сделал что-то подобное с обработкой через jRuby, это действительно очень мощная комбинация.

Ответ 5

Библиотека ImageScience предназначена для людей, которые ненавидят плохое использование памяти rMagick и т.д. Я использую ее как серверный процессор для attachment_fu, что упрощает создание модели изображения в Rails.

Ответ 6

Вы можете использовать mini-magick для работы с ImageMagick в Ruby.