Witam,
Mam problem z tworzeniem pliku BMP, chodzi o to że muszę stworzyć bitmapę 'manualnie' bez żadnej innej biblioteki która utworzy za mnie nagłówki itd.
char file[] = {'B','M',0,0,0,0, 0,0,0,0, 54,0,0,0};
char info[] = {
40,0,0,0, // info hd size
0,0,0,0, // width
0,0,0,0, // heigth
1,0, // number color planes
24,0, // bits per pixel
0,0,0,0, // compression is none
0,0,0,0, // image bits size
0x13,0x0B,0,0, // horz resoluition in pixel / m
0x13,0x0B,0,0, // vert resolutions (0x03C3 = 96 dpi, 0x0B13 = 72 dpi)
0,0,0,0, // #colors in pallete
0,0,0,0, // #important colors
};
int w=10;
int h=10;
int padSize = (4-w%4)%4;
int sizeData = w*h*3 + h*padSize;
int sizeAll = sizeData + file.length + info.length;
file[2] = (char)( sizeAll );
file[3] = (char)( sizeAll>> 8);
file[4] = (char)( sizeAll>>16);
file[5] = (char)( sizeAll>>24);
info[4] = (char)( w );
info[5] = (char)( w>> 8);
info[6] = (char)( w>>16);
info[7] = (char)( w>>24);
info[ 8] = (char)( h );
info[ 9] = (char)( h>> 8);
info[10] = (char)( h>>16);
info[11] = (char)( h>>24);
info[24] = (char)( sizeData );
info[25] = (char)( sizeData>> 8);
info[26] = (char)( sizeData>>16);
info[27] = (char)( sizeData>>24);
PrintWriter fo = new PrintWriter("imagee.bmp");
for(int i=0; i<file.length; i++) {
fo.write((char)file[i]);
}
for(int i=0; i<info.length; i++) {
fo.write((char)info[i]);
}
fo.close();
Niestety, plik się tworzy, lecz nie można go otworzyć, zawartość pliku bmp to
BMŶ 6 (
ŀ
Co może tu być źle?