2010-05-11 112 views
1

在我的应用我为使用如下代码裁剪所拍摄的图像: -如何在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度并在我使用照片库的情况下,它完美的作品。

所以你可以过滤我的上述代码,知道我错在哪里。

请帮我出其迫切 由于事先

回答

1

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

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

0

最快和最简单的方法是看看NYXImagesKit。用UIImage+Resizing类别可以裁剪图像。从文档:

的UIImage +调整大小

此类别可用于作物或缩放图像。

裁剪

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

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

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

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