Библиотеки обработки изображений Ruby / Rails - PullRequest
14 голосов
/ 10 ноября 2009

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

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

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

Спасибо!

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

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

Ответы [ 6 ]

5 голосов
/ 10 ноября 2009

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

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")

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

4 голосов
/ 05 декабря 2009

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

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

2 голосов
/ 05 декабря 2009

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

2 голосов
/ 10 ноября 2009

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

1 голос
/ 10 ноября 2009

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

1 голос
/ 10 ноября 2009

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

...