2010-08-11 36 views
0

de travail sous Mac OS X, CocoaCréation d'images psd avec des propriétés de calque à l'aide CGImageRef

J'ai une image psd à la propriété en couches. Je veux recadrer le rectangle de recadrage et enregistrer cette image recadrée avec les paramètres de l'image originale. J'utilise CGImageRef pour toutes les opérations liées à l'image.

J'ai joint le code que j'ai utilisé pour recadrer l'image ci-dessous. Mais il ne parvient pas à créer l'image en couches.

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

    } 

Répondre

1

Il n'y a pas moyen de lire des calques séparés des fichiers PSD sous Mac OS X avec les API intégrée uniquement. Tout va presque certainement passer par CGImageSource, et CGImageSource ne supporte pas la lecture de couches séparées à partir de fichiers PSD. (The documentation says this explicitly for the CGImageSourceGetCount function, et expérimentation en utilisant seulement CGImageSourceCreateImageAtIndex le confirme.)

Vous aurez besoin d'utiliser une bibliothèque de lecture PSD tiers.

+0

Existe-t-il une bibliothèque pour les images .psd en lecture et en écriture? Et il doit aussi soutenir la culture! – Dhanaraj

+0

Dhanaraj: Vous devriez poser cette question séparément. –

+0

Vous pouvez le faire avec Carbon/Quicktime. – hooleyhoop