在我的应用程序中,我image
使用相机捕捉UIImagePicker
而不是裁剪它。但问题是,当我在横向模式下从相机拍摄图像时,在纵向模式下裁剪时,黑匣子会显示在图像中。
图像以横向模式拍摄 -
并且在使用该图像时,黑框显示在图像的上部和底部,如下图所示 -
但我想移除黑色部分,以便image
覆盖整个区域。
我怎样才能做到这一点 ?
在我的应用程序中,我image
使用相机捕捉UIImagePicker
而不是裁剪它。但问题是,当我在横向模式下从相机拍摄图像时,在纵向模式下裁剪时,黑匣子会显示在图像中。
图像以横向模式拍摄 -
并且在使用该图像时,黑框显示在图像的上部和底部,如下图所示 -
但我想移除黑色部分,以便image
覆盖整个区域。
我怎样才能做到这一点 ?
您是否正在裁剪图像,
CGImageCreateWithImageInRect([image CGImage], rect);
或者您能否分享一下您是如何进行裁剪的?
当从UIImagePickerController
横向模式下拍摄图像时,您需要检查 UIImage 的方向属性。IE[image orientation];
如果方向值为UIInterfaceOrientationLandscapeLeft|UIInterfaceOrientationLandscapeRight
,则在矩形宽度和高度之间互换。然后裁剪它。
-(UIImage *)crop:(CGRect)rect Image:(UIImage *)originalImage ImageOrientation:(UIImageOrientation)imageOrientation
{
CGImageRef imageRef = CGImageCreateWithImageInRect(originalImage.CGImage, rect);
UIImage *result = [UIImage imageWithCGImage:imageRef scale:1.0f orientation:imageOrientation];
CGImageRelease(imageRef);
return result;
}