views:

29

answers:

1

Hi,

Working in Mac OSX, Cocoa

I have an psd image with layered property. I want to crop it to the crop rect and save this cropped image with the settings of original image.

I am using CGImageRef for all the image related operations.

I have enclosed the code i used to crop the image is given below. But it fails to create the layered image.

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

    }
+1  A: 

There's no way to read separate layers from PSD files in Mac OS X with only built-in APIs. Everything is almost certainly going to go through CGImageSource, and CGImageSource does not support reading separate layers from PSD files. (The documentation says this explicitly for the CGImageSourceGetCount function, and experimentation using only CGImageSourceCreateImageAtIndex bears it out.)

You'll need to use a third-party PSD-reading library.

Peter Hosey
Is there any library for Read and Write .psd images? And it also has to support crop!.
Dhanaraj
Dhanaraj: You should ask that as a separate question.
Peter Hosey