Сохранение в файл PCX. Программирование на Си/С, исходник
Код на C++ void save_PCX(int x0,int y0,int x,int y,char* file_name) { FILE* ImagePCX; if ((x-x0)/2*2!=(x-x0)) x++; ImagePCX = fopen(file_name, "wb"); HeaderPCX Header;//Сохранение в файл PCX. Заголовок файла PCX Header.Manufacturer = 10; Header.Version = 5; Header.Encoding = 1; Header.Bitperpixel = 4; Header.MinX =x0; Header.MinY =y0; Header.MaxX =x; Header.MaxY =y; unsigned char r,g,b;//Сохранение в файл PCX for (int i=0;i<16;i++) { r=pal[i][0];g=pal[i][1];b=pal[i][2]; Header.Colormap[i]=RGB(r,g,b); } Header.HRes = Header.VRes = 72; Header.NPlanes = 1; Header.Bytesperline = 320; Header.Paletteinfo = 1; fwrite(&Header, sizeof(HeaderPCX), 1, ImagePCX); for(int YPos=y0; YPos<y+1; YPos++) for(int XPos=x0; XPos<640+x0;XPos+=2) { int unsigned color; if(XPos>=x0&&XPos<=x) { color=getpixel(XPos,YPos); fputc(0xC1, ImagePCX); fputc(16*color+color, ImagePCX); } else { fputc(0xC1, ImagePCX); fputc(0xC1, ImagePCX); } } fclose(ImagePCX); }
|