RGB変換bmpピクチャjsでの処理ベース
説明:BMP画像は下から上へ、左から右へ格納されているので、RGBデータはBMPデータに書き込んで逆さまに取ります.
RGBを左から右へ、上から下へ格納すると、bmpヘッドは高さを負の数に書きます.
例:
RGBを左から右へ、上から下へ格納すると、bmpヘッドは高さを負の数に書きます.
例:
var bytes = .... ; //RGB byte
var fileSize = bytes.length +14 + 40;
console.log("fileSize:"+fileSize);
var nBytes = new Uint8Array(fileSize);
var width = (w == null ) ? 320 : w; // w RGB
// var height = (h == null ) ? 0xffffffff - 240 + 1 : h; // ,h RGB
var height = (h == null ) ? 240 : h; // h RGB
//top
nBytes[0] = 0x42;//2Bytes, "BM", 0x424D Windows
nBytes[1] = 0x4D;
nBytes[2] = fileSize % 256;//4Bytes, BMP
nBytes[3] = fileSize / 256 % 256;
nBytes[4] = fileSize / 256 / 256 % 256;
nBytes[5] = fileSize / 256 / 256 /256 % 256;
nBytes[6] = 0;//2Bytes, , 0
nBytes[7] = 0;
nBytes[8] = 0;//2Bytes, , 0
nBytes[9] = 0;
nBytes[10] = 0x36; //4Bytes,
nBytes[11] = 0;
nBytes[12] = 0;
nBytes[13] = 0;
nBytes[14] = 0x28; //4Bytes,INFOHEADER , I NFOHEADER,
nBytes[15] = 0;
nBytes[16] = 0;
nBytes[17] = 0;
nBytes[18] = width % 256; //4Bytes
nBytes[19] = width / 256 % 256;
nBytes[20] = width / 256 / 256 % 256;
nBytes[21] = width / 256 / 256 /256 % 256;
nBytes[22] = height % 256; //4Bytes
nBytes[23] = height / 256 % 256;
nBytes[24] = height / 256 / 256 % 256;
nBytes[25] = height / 256 / 256 /256 % 256;
nBytes[26] = 0x01;// ,BMP RGB , 1
nBytes[27] = 0x00;
nBytes[28] = 0x18;//
nBytes[29] = 0x00;
nBytes[30] = 0x00;//0: ,1:RLE8,2:RLE4
nBytes[31] = 0x00;
nBytes[32] = 0x00;
nBytes[33] = 0x00;
nBytes[34] =parseInt( width * height * 3) % 256;//RGB
nBytes[35] =parseInt(( width * height * 3) / 256) % 256;
nBytes[36] =parseInt(( width * height * 3) / 256 / 256) % 256;
nBytes[37] =parseInt(( width * height * 3) / 256 / 256 /256) % 256;
// nBytes[34] = 0x00;//RGB
// nBytes[35] = 0x84;
// nBytes[36] = 0x03;
// nBytes[37] = 0x00;
nBytes[38] = 0x60;//4 Bytes, /
nBytes[39] = 0x00;
nBytes[40] = 0x00;
nBytes[41] = 0x00;
nBytes[42] = 0x60;//4 Bytes, /
nBytes[43] = 0x00;
nBytes[44] = 0x00;
nBytes[45] = 0x00;
nBytes[46] = 0x00;//4 Bytes, ,0:
nBytes[47] = 0x00;
nBytes[48] = 0x00;
nBytes[49] = 0x00;
nBytes[50] = 0x00;//4 Bytes, ,0:
nBytes[51] = 0x00;
nBytes[52] = 0x00;
nBytes[53] = 0x00;
// for(var i = 0 ; i < bytes.length ; i ++){ //
// nBytes[54 + i] = bytes[i];
// }
var a = 0 ;
for(var i = 0 ; i < height ; i ++){
for(var j = 0 ; j < width * 3 ; j ++ ){
nBytes[54 + a] = bytes[bytes.length - (width * 3 * i) - (width * 3 - j)];
a ++ ;
}
}
return nBytes;// BMP