有没有一种有效的方法可以从 2D NArray(一个应该比常规数组更有效的 Ruby 类)中的数据创建 RMagick 图像,或者这两个库的数据类型不兼容?
下面的代码可以工作,但很难做到:使用嵌套的 do-loop 逐像素转换数据类型。据我所知,这给了我很多额外的工作,但没有 NArray 的优点。它在一月份的运行速度比糖蜜慢:
def LineaProcessor.createImage(dataArray, width, height, filename)
image = Magick::Image.new width, height
# scale pixel values from 0..256*255 (the RMagick pixel uses 16 bits)
scaling = 65280/dataArray.max
# set each pixel...I couldn't find any easy way to convert array types
width.times do |x|
height.times do |y|
g = dataArray[x+y*width]*scaling
pixel = Magick::Pixel.new(g, g, g,0)
image.pixel_color x, y, pixel
end
end
image
end