Photoshop Plugin!?!
-
hallo,
ich bin gerade dabei ein eigenes Grafikformat zu machen und programmiere deshalb ein Plugin für Photoshop, das dieses schreiben bzw. lesen kann.
Ich schreibe das Plugin nicht komplett neu, sondern erweitere ein vorhandenes Beispiel ( SimpleFormat)
Ich kann bereits RGB-Werte abspeichern, aber bei dem AlphaChannel habe ich ein paar Probleme: Wenn ich z.B. einen Wert im Alpha-Channel von 172 abspeichern will, kommt am Ende ein Wert von 171 raus!Hier mal der Sourcecode zum Speichern des Files:
static void DoWriteStart (GPtr globals) { FileHeader header; if (gResult != noErr) return; if (!TSC ((Boolean)(!CheckForServices (globals)))) return; gResult = SetFPos (gStuff->dataFork, fsFromStart, 0); header.Width=gStuff->imageSize.h; header.Height=gStuff->imageSize.v; header.Identification=1331; if(gStuff->imageMode==plugInModeRGBColor && gStuff->planes==3) header.BitCount=24; else if(gStuff->imageMode==plugInModeRGBColor && gStuff->planes==4) header.BitCount=32; else { gResult=formatCannotRead; return; } WriteSome (globals, sizeof (FileHeader), &header); if (gResult != noErr) return; BufferID buffer; gPixelBuffer = 0; AllocateBuffer(header.Width*header.BitCount/8, &buffer); gPixelBuffer = buffer; gPixelData = LockBuffer (gPixelBuffer, FALSE); gStuff->data=gPixelData; if(header.BitCount==24) { gStuff->loPlane=0; gStuff->hiPlane=2; gStuff->colBytes=3; gStuff->rowBytes=3*header.Width; gStuff->planeBytes=1; for(int y=0;y<header.Height;y++) { gStuff->theRect.top = y; gStuff->theRect.left = 0; gStuff->theRect.bottom = y+1; gStuff->theRect.right = header.Width; AdvanceState (); WriteSome (globals,header.Width*header.BitCount/8,gPixelData); } if (gPixelBuffer != 0) { FreeBuffer (gPixelBuffer); gPixelBuffer = 0; gPixelData = 0; } } else if(header.BitCount==32) { gStuff->loPlane=0; gStuff->hiPlane=3; gStuff->colBytes=4; gStuff->rowBytes=4*header.Width; gStuff->planeBytes=1; for(unsigned int y=0;y<header.Height;y++) { gStuff->theRect.top = y; gStuff->theRect.left = 0; gStuff->theRect.bottom = y+1; gStuff->theRect.right = header.Width; AdvanceState (); WriteSome (globals,header.Width*header.BitCount/8,gPixelData); } if (gPixelBuffer != 0) { FreeBuffer (gPixelBuffer); gPixelBuffer = 0; gPixelData = 0; } } gStuff->data = NULL; }
Kennt jemand vielleicht ein spezielles Forum für die Entwicklung von Photoshop-Plugins?
-
Hab zwar keine ahnung von photoshop aber wenn der wert im alpha-channel immer um eins kleiner is mach doch einfach ein +1
und zum forum: frag doch einfach mal im grafik-forum nach