getImageData
hereのドキュメントをご覧ください。
大きな配列を含むdata
属性を持つImageData
オブジェクトが得られます。すべてのピクセルについて、配列内には、r
,g
,b
、およびalpha
の4つのエントリがあります。配列は[pixel1R, pixel1G, pixel1B, pixel1Alpha, ..., pixelNR, pixelNG, pixelNB, pixelNAlpha]
のようになります。
まず、すべてをRGB形式にしたいと考えています。
dataArray = imageData.data
rgbArray = []
for (var i = 0; i < dataArray.length; i+=4) {
rgbArray.push([dataArray[i], dataArray[i+1], dataArray[i+2]])
}
今すぐすべてがrgbArray
にきれいに保存されている私はRGB24
約100%わからないんだけど、私はそれは、各R/G/Bを意味し、各エンティティが24ビットである意味かなり確信していますそれぞれ1バイトありますが、それはすでに値の範囲であるためです。今すぐ梱包するだけです。
rgb24Array = rgbArray.map(function(rgbList){
return (rgbList[0] << 16) | (rgbList[1] << 8) | (rgbList[2])
})
このコードは、1で2バイト、緑に赤シフトし、その後、or
値が一緒に
はかなり確信してこれを使用すると、バイトのフラットな配列を必要とするよう
私は明日までそれを試すことができますが、それから私はそれに戻ってきますが、私はそれを試すことができますよ、よさそうです。 – nameless
それを前にテストすることができました。次に、rgbの値である11261927のような値が得られます。しかし、何か正しいものではないようです。1. istは9ではなく8桁で、9桁の理由はわかりません。 – nameless
すべてのrgbの値がそれぞれ3桁であるわけではないので..シフトも間違っているので... – nameless