如何在iPhone中裁剪图像?

时间:2010-05-11 10:42:34

标签: iphone

在我的应用程序中,我使用以下代码裁剪捕获的图像: -

-(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
}

但我的问题是,当我使用相机拍摄照片来裁剪拍摄的图像时,它将图像向右旋转90度,如果我使用照片库,它可以很好地工作。

那你可以检查一下我上面的代码,看看我错在哪里吗?

2 个答案:

答案 0 :(得分:1)

CGImage是没有元数据的UIImage,因此丢失了方向信息。我建议您获取原始[UIImage imageOrientation]的方向,存储它然后将其应用到最终图像。

如果不起作用,请尝试根据原稿的方向将CGAffineTransformMakeRotation(90.0*0.0174532925);应用于最终图像。

答案 1 :(得分:0)

最快最简单的方法是查看NYXImagesKit。使用UIImage+Resizing类别,您可以裁剪图片。来自文档:

的UIImage +调整大小

此类别可用于裁剪或缩放图像。

  

裁剪

     

您可以通过9种不同的方式裁剪图像:

     

左上方顶部中心右上方左下方底部中央右下方   左中右右中心

     

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

     

NYXCropMode是一个枚举类型,可以在头文件中找到它   用于表示上述9种模式。