我正在使用rmagick处理获取位图的每个单个像素。我需要获得深度为8(256色)的颜色值,但不幸的是,当我使用像素。[颜色](例如像素。红色)时,我得到它们的深度为16.它甚至发生在我之后used image.quantize(256)。
以下是代码:
require 'RMagick'
include Magick
image = ImageList.new("image.bmp")
image3 = image.quantize(number_colors = 256)
puts image3.number_colors
image2 = Image.new(image.columns, image.rows)
(0..image.columns).each do |x|
(0..image.rows).each do |y|
pixel = image3.pixel_color(x, y)
print pixel.red
print ", "
print pixel.green
print ", "
print pixel.blue
print "\n"
image2.pixel_color(x, y, pixel)
end
end
我应该得到0..255的值?
答案 0 :(得分:2)
它们以16位的“量子深度”存储。您可以重建库来更改它。或者你可以简单地将每个值除以257。
有一个名为MagickExportImagePixels的函数可以为您提供所需的8位像素数据。无论何时对图像执行转换等,它都会转换回16位像素。