在我的应用程序中,我使用以下代码裁剪捕获的图像: -
-(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度,如果我使用照片库,它可以很好地工作。
那你可以检查一下我上面的代码,看看我错在哪里吗?
答案 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种模式。