PNG 画像を読み込み、各ピクセルの RGB 値を含むマトリックスを作成する方法を見つけようとしています。現在、次の方法を使用してファイルをロードし、さまざまな RGB 値を取得しています。
def to_pixels
File.open(@file, 'r') do |file|
byte_block = file.read
byte_block.each_byte do |byte|
@pixels << byte
end
end
end
私の理解では、各ピクセルには R、G、および B の値を表す 3 バイトが含まれています。最初に、出力配列 @pixels を取得して、各ピクセルのピクセル順序と RGB 値が出力に保持されていると仮定して、3 つの要素のサブグループにグループ化しようとしました。例えば:
@pixels = @pixels.each_slice(3).to_a
作成した配列の長さは、元の画像の総ピクセル数とほぼ同じ長さだったので、勇気づけられました。ただし、ChunkyPNG を使用して RGB ピクセル配列を取得し、画像に印刷すると、ランダムなカラー ノイズのように見えます。入力されているバイトの一部が@pixelsメタデータを表している可能性はありますか? または、出力されるバイトは、個々の画像の R、G、B 値の順に並べられず、たとえば、すべての R バイト、次にすべての G バイト、次にすべての B バイトでしょうか?
バイト配列を、画像の RGB 値を論理的な順序でグループ化する配列の配列に変換する方法を理解したいと思います (左上から開始して右方向に作業するか、左上から開始して下方向に作業するなど)。