首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用与显示不同的尺寸捕获照片

用与显示不同的尺寸捕获照片
EN

Stack Overflow用户
提问于 2019-03-13 20:42:04
回答 1查看 1.6K关注 0票数 1

我试着用iPhone用AVFoundation捕捉图片,但是我有一些困难要找到我需要的东西。我创建了一个AVCaptureSession并将预设添加到AVCaptureSessionPresetHigh中。self.session.sessionPreset = AVCaptureSessionPresetHigh;

我在视图中显示videoPreviewLayer,我可以用代码捕获图片:

代码语言:javascript
复制
AVCapturePhotoSettings *settings = [AVCapturePhotoSettings photoSettingsWithFormat: @{AVVideoCodecKey:AVVideoCodecJPEG}];
[self.stillImageOutput capturePhotoWithSettings:settings delegate:self]

我得到了一张FHD图片(1920x1080),所以这个很好。

但现在我想保持一个良好的显示图片,所以保持预设高,但捕获的分辨率640x480。

有可能吗?有什么想法吗?

我试过这个:

代码语言:javascript
复制
NSDictionary *outputSetting = [NSDictionary dictionaryWithObjectsAndKeys:
                               [NSNumber numberWithDouble:1280], (id)kCVPixelBufferHeightKey,
                               [NSNumber numberWithDouble:960], (id)kCVPixelBufferWidthKey,
                               [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA], (id)kCVPixelBufferPixelFormatTypeKey,
                               nil];

AVCapturePhotoSettings *settings = [AVCapturePhotoSettings photoSettingsWithFormat: outputSetting];

[self.stillImageOutput capturePhotoWithSettings:settings delegate:(id)self];

但我知道这个错误:

代码语言:javascript
复制
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[AVCapturePhotoSettings photoSettingsWithFormat:] Unsupported keys specified: {(
    Height,
    Width
)}. Supported keys are {(
    PixelFormatType
)}'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-14 16:21:48

当您准备拍照时,请求640x480次输出,如下所示:

代码语言:javascript
复制
let settings = AVCapturePhotoSettings()
let pbpf = settings.availablePreviewPhotoPixelFormatTypes[0]
settings.previewPhotoFormat = [
    kCVPixelBufferPixelFormatTypeKey as String : pbpf,
    kCVPixelBufferWidthKey as String : 640,
    kCVPixelBufferHeightKey as String : 480

当您拍照时,将settings传递进来,如下所示:

代码语言:javascript
复制
output.capturePhoto(with: settings, delegate: self)

辅助输出将作为委托方法中的照片的previewCGImageRepresentation返回给您。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55150887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档