从square AVCaptureVideoPreviewLayer获取图片

时间:2013-06-28 23:50:51

标签: ios objective-c ios6 avfoundation

所以我正在做的是创建一个自定义图像选择器,我有一个320 X 320 AVCaptureVideoPreviewLayer,我正在使用,当我拍照时,我想获得实际在预览图层中看到的内容的UIImage ,但是当我用captureStillImageAsynchronouslyFromConnection: completionHandler:拍照时我得到的是一张尺寸为2448 X 3264的普通图像。那么将这张图像变成320 x 320正方形图像的最佳方法就像在预览图层没有弄乱它?有没有Right Way™这样做?另外,如果相关,我将AVLayerVideoGravityResizeAspectFill用于videoGravity AVCaptureVideoPreviewLayer属性{{1}}。

1 个答案:

答案 0 :(得分:0)

您是否尝试过转换图像?

尝试使用CGAffineTransformMakeScale(<#sx: CGFloat#>, <#sy: CGFloat#>)缩小图像。变形可以做魔术!如果你曾经使用线性代数,你应该记住你的标准变换矩阵。我没有将它用于图像,所以我不确定这是否适用于像素。

您也可以尝试

// grab the original image
    UIImage *originalImage = [UIImage imageNamed:@"myImage.png"];
    // scaling set to 2.0 makes the image 1/2 the size. 
    UIImage *scaledImage = 
                [UIImage imageWithCGImage:[originalImage CGImage] 
                              scale:(originalImage.scale * 2.0)
                                 orientation:(originalImage.imageOrientation)];

您可以在其中更改比例因子