, :
a) () , .
) , DOM, .
c) , (
... ).
, .
Javascript Typed,
imageData.
, ,
( 2)):
( :)
UInt32Array ImageData :
var myGetImageData = myTempCanvas.getImageData(0,0,sizeX, sizeY);
var sourceBuffer32 = new Uint32Array(myGetImageData.data.buffer);
sourceBuffer32 [i] , , , 32- int . 0, , (!= (0,0,0,0))
Uint8Array:
var myGetImageData = myTempCanvas.getImageData(0,0,sizeX, sizeY);
var sourceBuffer8 = new Uint8Array(myGetImageData.data.buffer);
, R = G = B,
sourceBuffer8[4*i]>Threshold
i- , UInt32Array:
sourceBuffer32[i]=0xff000000;
/ :
sourceBuffer32[i]= (A<<24) | (B<<16) | (G<<8) | R ;
:
sourceBuffer32[i]= 0xff000000 | (B<<16) | (G<<8) | R ;
(, R ).
@Ken, , , , 32 .
little-endian, RGBA ABGR 32 .
, 32- , , ,
- - 32- Big endian.
:
function isLittleEndian() {
var b = new ArrayBuffer(4);
var a = new Uint32Array(b);
var c = new Uint8Array(b);
a[0] = 0xdeadbeef;
if (c[0] == 0xef) { isLittleEndian = function() {return true }; return true; }
if (c[0] == 0xde) { isLittleEndian = function() {return false }; return false; }
throw new Error('unknown endianness');
}
function reverseUint32 (uint32) {
var s32 = new Uint32Array(4);
var s8 = new Uint8Array(s32.buffer);
var t32 = new Uint32Array(4);
var t8 = new Uint8Array(t32.buffer);
reverseUint32 = function (x) {
s32[0] = x;
t8[0] = s8[3];
t8[1] = s8[2];
t8[2] = s8[1];
t8[3] = s8[0];
return t32[0];
}
return reverseUint32(uint32);
};