RGB変換bmpピクチャjsでの処理ベース


説明: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