psd Bilderzeugung mit Schichteigenschaften mit CGImageRef
Frage
Arbeiten in Mac OSX, Kakao
ich ein psd Bild mit geschichteter Eigenschaft. Ich will es auf die Ernte rect zuzuschneiden und diese beschnittene Bild mit den Einstellungen des ursprünglichen Bildes speichern.
Ich bin mit CGImageRef für alle das Bild bezogene Operationen.
Ich habe den Code eingeschlossen i verwendet das Bild zuzuschneiden ist unten angegeben. Aber es scheitert das lagertes Bild zu erstellen.
NSImage *img = [[NSImage alloc]initWithContentsOfFile:imagePath];
NSBitmapImageRep *rep = [[NSBitmapImageRep alloc] initWithData:[img TIFFRepresentation]];
CGImageRef imageRef = [rep CGImage];
CGImageRef cropedImage = CGImageCreateWithImageInRect(imageRef, cropRect);
CGImageDestinationRef idst = CGImageDestinationCreateWithURL( url, type, 1, NULL );
if( idst != NULL ) {
CGImageDestinationAddImage( idst, image, properties );
bool success = CGImageDestinationFinalize( idst );
}
Lösung
Es gibt keine Möglichkeit, separate Ebene von PSD-Dateien in Mac OS X mit nur integrierten APIs zu lesen. Alles wird mit ziemlicher Sicherheit durch CGImageSource gehen, und CGImageSource unterstützt keine separaten Ebene von PSD-Dateien zu lesen. ( die Dokumentation sagt dies ausdrücklich für die CGImageSourceGetCount
Funktion und nur CGImageSourceCreateImageAtIndex
trägt es aus mit Experimenten.)
Sie werden eine Drittanbieter-PSD-Bibliothek zum Lesen verwenden müssen.