rmagick像素颜色值

Mic*_*hal 5 ruby rmagick colors bitmap depth

我正在使用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
Run Code Online (Sandbox Code Playgroud)

我应该得到0..255的值?

Ber*_*ert 4

它们存储在 16 位的“量子深度”中。您可以重建库来改变这一点。或者您可以简单地将每个值除以 257。

有一个名为 MagickExportImagePixels 的函数,它可以为您获取所需的 8 位像素数据。每当您对图像执行转换等操作时,它都会转换回 16 位像素。