裁剪从AVCaptureStillImageOutput拍摄的图像

时间:2013-09-17 16:09:17

标签: iphone ios objective-c image ios7

我正在尝试裁剪从AVCaptureStillImageOutput拍摄的图像,但无法正确裁剪到正确的矩形。

我对相机视频的预览是320x458帧,裁剪矩形出现在此预览帧内,其坐标和大小为CGRectMake(60,20,200,420)。

拍摄照片后,我会收到

中的图片
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
UIImage *image = [[UIImage alloc] initWithData:imageData];
UIImage *finalImage = [self cropImage:image];

之后我尝试使用以下功能裁剪尺寸为1080x1920的实际图像。我得到了一个任性的剪辑,结果图像超出了实际的矩形! ;(

- (UIImage *)cropImage:(UIImage *)oldImage {
    CGRect rect = CGRectMake(60, 20, 200, 420);
    CGSize boundSize = CGSizeMake(320, 458);

    float widthFactor = rect.size.width * (oldImage.size.width/boundSize.width);
    float heightFactor = rect.size.height * (oldImage.size.height/boundSize.height);
    float factorX = rect.origin.x * (oldImage.size.width/boundSize.width);
    float factorY = rect.origin.y * (oldImage.size.height/boundSize.height);

    CGRect factoredRect = CGRectMake(factorX,factorY,widthFactor,heightFactor);
    UIImage *croppedImage = [UIImage imageWithCGImage:CGImageCreateWithImageInRect([oldImage CGImage], factoredRect) scale:oldImage.scale orientation:oldImage.imageOrientation];
    return croppedImage;
}

在附图中,我正在尝试裁剪咖啡杯,但我得到的不是正确的裁剪图像!

Image to be cropped Cropped image - wrong

2 个答案:

答案 0 :(得分:1)

我认为您应该使用PEPhotoCropEditor示例代码进行裁剪。它易于使用。您可以从https://www.cocoacontrols.com/controls/pephotocropeditor

下载源代码

答案 1 :(得分:0)

我也在这方面遇到困难我认为你要做的就是写文件图像然后裁剪图像或试用方向问题来解决。