Как я могу генерировать растровые изображения в Ruby on Rails - PullRequest
3 голосов
/ 15 октября 2010

Какой лучший способ генерировать картинки, пиксель за пикселем в Ruby on Rails. У меня есть двумерная матрица со всеми значениями цвета для каждого пикселя, которые я хочу визуализировать.

Примерно так:

myBitmap = new Bitmap(:width => Column.all.count, :height => Row.all.count)
Colum.all.each do |col|
 Row.all.each do |row|
  #Draw the Pixel, with the color information in the matrix
 end
end 

Ответы [ 2 ]

3 голосов
/ 28 октября 2010

Не уверен, что это действительно RoR, но скорее вопрос Ruby. Одним из способов является использование RMagick, оболочки вокруг ImageMagick. Говорят, что RMagick теряет память, и установка Rmagick / Imagemagick может оказаться сложной задачей. У меня был лучший опыт при установке Imagemagick с brew (OS X).

require 'rubygems'
require 'rmagick'
width = 100
height = 100
data = Array.new(width) do
  Array.new(height) do
    [rand(255), rand(255), rand(255)]
  end
end


img = Magick::Image.new(width, height)

data.each_with_index do |row, row_index|
  row.each_with_index do |item, column_index|
    #puts "setting #{row_index}/#{column_index} to #{item}"
    img.pixel_color(row_index, column_index, "rgb(#{item.join(', ')})")
  end
end

img.write('demo.bmp')
0 голосов
/ 29 октября 2010

Вы также можете использовать GD2 и его привязку к ruby. Кажется, не очень популярен. Не знал, что RMagick больше не поддерживается. Спасибо.

require 'rubygems'
require 'gd2'

width = 100
height = 100
data = Array.new(width) do
  Array.new(height) do
    rand(16777216)
  end
end
image = GD2::Image::TrueColor.new(width, height)
data.each_with_index do |row, row_index|
  row.each_with_index do |item, column_index|
    image.set_pixel(row_index, column_index, item)
  end
end

File.open('gd2demo.png', 'wb') do |file|
  file << image.png
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...