gpt4 book ai didi

iphone - 想要使用 AVFoundation 框架在 iPhone 相机中使用缩放功能

转载 作者:可可西里 更新时间:2023-11-01 03:57:06 25 4
gpt4 key购买 nike

我想使用 UISlider 缩放相机。

我通过调整AVCaptureVideoPreviewLayerAffineTransform成功做到了。

代码如下

-(void)sliderAction:(UISlider*)sender{
CGAffineTransform affineTransform = CGAffineTransformMakeTranslation(sender.value, sender.value);
affineTransform = CGAffineTransformScale(affineTransform, sender.value, sender.value);
affineTransform = CGAffineTransformRotate(affineTransform, 0);
[CATransaction begin];
[CATransaction setAnimationDuration:.025];
//previewLayer is object of AVCaptureVideoPreviewLayer
[[[self captureManager]previewLayer] setAffineTransform:affineTransform];
[CATransaction commit];
}

但是当我捕获它时,我得到的是非缩放的图像对象。

最佳答案

回复有点晚了。但我正在回复以备将来引用。实际上,您在代码中所做的只是更改了预览层的缩放系数,而不是底层输出连接。但是要使缩放最初反射(reflect)在捕获的输出上,您还必须将这个因素也放在输出连接中。您可以使用类似于以下内容的内容:

-(void)sliderAction:(UISlider*)sender
{
AVCaptureConnection* connection = [self.photoOutput connectionWithMediaType:AVMediaTypeVideo]; // photoOutput is a AVCaptureStillImageOutput object, representing a capture session output with customized preset

CGAffineTransform affineTransform = CGAffineTransformMakeTranslation(sender.value, sender.value);
affineTransform = CGAffineTransformScale(affineTransform, sender.value, sender.value);
affineTransform = CGAffineTransformRotate(affineTransform, 0);
[CATransaction begin];
[CATransaction setAnimationDuration:.025];
//previewLayer is object of AVCaptureVideoPreviewLayer
[[[self captureManager]previewLayer] setAffineTransform:affineTransform];
if (connection) {
connection.videoScaleAndCropFactor = sender.value;
}
[CATransaction commit];
}

它应该可以解决问题。

理想情况下,您不应在 Slider 例程中执行 connection.videoScaleAndCropFactor 更改,而应将代码放在原始捕获例程中,并使用 slider 的瞬时值,就在调用 captureStillImageAsynchronouslyFromConnection 方法之前。

希望对您有所帮助:)

关于iphone - 想要使用 AVFoundation 框架在 iPhone 相机中使用缩放功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17564536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com