Purebasic : создание BMP 8bpp

 

*pal=AllocateMemory(1024)
CreateFile(0,"256c.bmp")
; typedef struct tagRGBQUAD {
;   BYTE rgbBlue;
;   BYTE rgbGreen;
;   BYTE rgbRed;
;   BYTE rgbReserved;
;   } RGBQUAD       ;
  
For i=0 To 255
  PokeA(*pal+i*4,i)
  PokeA(*pal+i*4+1,i)
  PokeA(*pal+i*4+2,i)
Next i
width=256
height=256
bfh.BitmapFileHeader
bih.BitmapInfoHeader
;     // Calculate sizes
;     int paletteSize = palette.size() * SizeOf(RGBQUAD);
paletteSize=1024;256*4
pixelDataSize = width * height;
headerSize=SizeOf(bfh)+SizeOf(bih)
totalFileSize = headerSize + paletteSize + pixelDataSize;
;Fill BitmapFileHeader
bfh\bfType=$4D42
bfh\bfSize=totalFileSize
bfh\bfOffBits = headerSize + paletteSize;
;Fill BitmapInfoHeader
bih\biSize = SizeOf(bih);
bih\biWidth = width;
bih\biHeight = height;
bih\biPlanes = 1;
bih\biBitCount = 8; 256 colors
bih\biCompression = 0; BI_RGB
bih\biSizeImage = pixelDataSize;
bih\biClrUsed = 256;
bih\biClrImportant = 256;
;Write headers
WriteData(0,@bfh,SizeOf(bfh))
WriteData(0,@bih,SizeOf(bih))
;Write palette
WriteData(0,*pal,paletteSize)
;Write pixel Data
For y=0 To 255
  For x=0 To 255
    WriteAsciiCharacter(0,x!y)
  Next x
  Next y
CloseFile(0)
FreeMemory(*pal)

Комментарии