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); |