AG007
AG007

Reputation: 279

How to crop image in iPhone?

In my application I m using following codes to crop the captured image :-

-(void)imagePickerController:(UIImagePickerController *) picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{   
#ifdef _DEBUG
    NSLog(@"frmSkinImage-imagePickerController-Start");
#endif

    imageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    //=======================================
    UIImage *image =imageView.image;
    CGRect cropRect = CGRectMake(100, 100, 125,128);
    CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], cropRect);
    [imageView setImage:[UIImage imageWithCGImage:imageRef]]; 
    CGImageRelease(imageRef);
    //===================================================
    //imgglobal = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    // for saving image to photo album
    //UIImageWriteToSavedPhotosAlbum(imageView.image, self, @selector(image:didFinishSavingWithError:contextInfo:), self);
    [picker dismissModalViewControllerAnimated:YES];

#ifdef _DEBUG
    NSLog(@"frmSkinImage-imagePickerController-End");
#endif
}

But my problem is that when I use camera to take photo to crop the captured image it rotates the image to 90 degree towards right and in case I use Photo library it works perfectly.

So can you examine my above code, to see where I am wrong?

Upvotes: 1

Views: 3026

Answers (2)

gsempe
gsempe

Reputation: 5499

Fastest and easiest way is to have a look to NYXImagesKit. With UIImage+Resizing category you can crop image. From the documentation:

UIImage+Resizing

This category can be used to crop or to scale images.

Cropping

You can crop your image by 9 different ways :

Top left Top center Top right Bottom left Bottom center Bottom right Left center Right center Center

UIImage* cropped = [myImage cropToSize:(CGSize){width, height} usingMode:NYXCropModeCenter];

NYXCropMode is an enum type which can be found in the header file, it is used to represent the 9 modes above.

Upvotes: 0

Andiih
Andiih

Reputation: 12413

The CGImage is a UIImage without the meta data, and therefore loses the orientation information. I'd suggest that you get the orientation of the original [UIImage imageOrientation], store it and then apply it to the final image.

If that doesn't work, try applying a CGAffineTransformMakeRotation(90.0*0.0174532925); to the final image according to the orientation of the original.

Upvotes: 1

Related Questions