Adobe Photoshop PSD och PSB-FormatSkrivet av Paul BourkeJuni 2015 Translated to Swedish by Catherine Desroches, Aug 2017
Adobe PhotoShop PSD och PSB (large document format) är bekvämt format för export image data, i synnerhet 16 eller 32 bitars high dynamic range data. I det följande ges en kort översikt av minimikraven för att skapa en legal (Adobe PhotoShop kommer att läsa det) fil, en mer fullständig referens finns här. EN PSD-eller PSB-filen består av en enkel header följt av 4 sektioner, lyckligtvis alla avsnitt data kan lämnas tomma genom att ange 0 i avsnittet längd med undantag för det sista avsnittet som är bilddata. Huvudet består av de vanliga misstänkta
bilddata kan vara rå (nu komprimering), rle eller zip-komprimerade. I alla fall de data som presenteras i planar (i motsats till interleaved) form. En (ofullständig) exempel skapa ett 16-bitars gråskala PSD-filen nedan visas de funktioner som WriteXXX() skriva binära data till en fil som utför ett alternativ byte pendla för att hantera big eller little-endian uppgifter. FILE *fptr;
int i,j;
char header[8] = "8BPS";
unsigned short int version = 1,channels = 1,zero = 0;
unsigned int width = 150,height = 200;
unsigned int zerolength = 0;
unsigned short depth = 16,colourmode = 1,compression = 0;
unsigned short intvalue = 0;
fptr = fopen("test.psd","w");
// Header
fwrite(header,4,1,fptr);
WriteShort(fptr,version,TRUE);
for (i=0;i<3;i++)
WriteShort(fptr,zero,TRUE);
WriteShort(fptr,channels,TRUE);
WriteInt(fptr,height,TRUE);
WriteInt(fptr,width,TRUE);
WriteShort(fptr,depth,TRUE);
WriteShort(fptr,colourmode,TRUE);
WriteInt(fptr,zerolength,TRUE); // Colour mode data
WriteInt(fptr,zerolength,TRUE); // Image resource data
WriteInt(fptr,zerolength,TRUE); // Layer and mask section
// Image data
WriteShort(fptr,compression,TRUE);
for (j=0;j<height;j++) {
for (i=0;i<width;i++) {
intvalue = j * 65535 / height;
WriteShort(fptr,intvalue,TRUE);
}
}
fclose(fptr);
|