6

rmagick を使用して、ビットマップの各ピクセルを取得しています。色の値を深さ 8 (256 色) で取得する必要がありますが、残念ながら、pixel.[color] (pixel. red など) を使用すると、深さ 16 で取得しています。 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 の値だけを取得するにはどうすればよいですか?

4

1 に答える 1

4

それらは 16 ビットの「量子深度」に格納されます。これを変更するには、ライブラリを再構築します。または、単純に各値を 257 で割ることもできます。

必要な 8 ビット ピクセル データを取得できる MagickExportImagePixels という関数があります。画像に対して変換などを実行するたびに、16 ビット ピクセルに変換されます。

于 2012-12-22T17:59:43.377 に答える