从正方形AVCaptureVideoPreviewLayer中获取图片

3
所以我正在创建一个自定义图像选择器,我使用了一个320 X 320的AVCaptureVideoPreviewLayer。当我拍照时,我想获取实际预览层中所见的UIImage,但是当我使用captureStillImageAsynchronouslyFromConnection: completionHandler:拍照时,得到的是尺寸为2448 X 3264的普通图片。那么将此图像制作成与预览层类似的320 x 320正方形图像的最佳方法是什么?有没有正确的方法做这件事?另外,我对AVCaptureVideoPreviewLayervideoGravity属性使用了AVLayerVideoGravityResizeAspectFill,如果这有关的话。

你好,你的问题有答案了吗?我们正处于完全相同的情况。 - Ali
1个回答

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)];

在这里你可以改变比例因子


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接