Swift-技巧(四)设置照片尺寸和格式
2021-11-05 10:06
906 查看
摘要
平时实现拍照功能时,都是网上一通搜索,整体复制粘贴,自称无脑实现。但是当要求照片是不同的尺寸和格式( JPEG)时,就费力搞照片。其实在设置拍照时,就可以直接设置照片的尺寸和格式,用直接的方法来满足要求,岂不更好?
开始拍照前,需要创建
AVCaptureSession会话对象,如果仅仅是拍照就需要再创建
AVCapturePhotoOutput对象,预览页面在
AVCaptureVideoPreviewLayer类的对象中呈现,捕捉照片时调用
AVCapturePhotoOutput对象的
capturePhoto(with:, delegate:)函数。如果对这个流程感兴趣,给我留言,我会详细的梳理这个流程,接下来进入本期的重点。
设置图片的尺寸
设置图片的尺寸要用到
sessionPreset属性,在设置
AVCaptureSession会话配置时进行设置。
那么 sessionPreset
是做什么的?有这么大的能量?
根据苹果文档的解释来看,它是指示会话当前正在使用的的预设会话。这个设置会影响视频流或者图片的尺寸大小(这里指的是像素,特别注意)。
可以设置的尺寸是和
AVCaptureSession.Preset这个枚举属性是一一对应的,感兴趣的可以在 Xcode 中追进去看一下,这里简单列出几项:
要特别注意两点,这里的是先 height 后 width,图片已经红色框出来了,这个尺寸是以像素为单位。
接下来就简单了,根据需要照片的尺寸直接设置即可(默认是 .high
):
captureSession.sessionPreset = .high
设置图片的格式
这里主要说明怎么将照片的格式设置为 JPEG。其实它还支持其他的格式,这里告诉方式,其他的格式直接追代码就可以查看到。
如果稍有留意的看官,会发现捕捉照片的函数
capturePhoto(with settings: AVCapturePhotoSettings, delegate: AVCapturePhotoCaptureDelegate)中要传入
AVCapturePhotoSettings类型的对象,那么就在这里面设置咱需要的照片格式:
// 验证设备是否支持某一个格式 self.photoOutput.availablePhotoCodecTypes.contains(AVVideoCodecType(rawValue: AVVideoCodecJPEG)) { // 设置图片格式 photoSettings = AVCapturePhotoSettings(format: [AVVideoCodecKey: AVVideoCodecJPEG]) }
然后将
photoSettings对象传入
capturePhoto函数中,获取的照片就是自己设置的格式了。这里面有很多其他的格式,详细的可以追一下
AVVideoCodecType类型看看。
镜像是什么?
这里简单提一下,如果项目中也使用到前置摄像头来捕捉照片,会发现在同一个环境中,捕捉到的照片和后置摄像头捕捉到的照片对比发现,竟然最有颠倒了。那么如何去在捕获的时候就翻转过来呢?
这里就需要在设置输出对象的连接是设置
isVideoMirrored,当设置为 true 时,就会将捕捉的照片镜像翻转。
// 输出的连接对象 if let connection = self.photoOutput.connection(with: .video) { // 设置是否镜像,默认是 false connection.isVideoMirrored = true }
题外话
时间仓促,说的东西可能不全面,在你实现过程中遇到什么问题,评论区给我留言,我会尽快回复
相关文章推荐
- Visual Studio 2008/2010中Xaml开发格式设置技巧
- Visual Studio 2008/2010中Xaml开发格式设置技巧
- Visual Studio 2008/2010中Xaml开发格式设置技巧
- Swift-颜色设置技巧和(.clr)文件的创建和使用
- Visual Studio 2008/2010中Xaml开发格式设置技巧
- Qt设置QLineEdit控件不可编辑、密文输入、输入格式等小技巧
- 【技巧】Heading设置oracle数据库格式
- swift中获取数据设置时间格式
- Swift 注释格式使用技巧小结
- Visual Studio 2008/2010中Xaml开发格式设置技巧
- 如何把word转成pdf格式以及如何从指定页开始设置页码技巧
- Microsoft Office 应用程序脚本编写提示和技巧(Excel中设置基本柱形图格式)
- 在Excel中将数字设置成文本格式的技巧
- [唐胡璐]Excel技巧 - Excel Format(格式)的设置
- Swift 注释格式使用技巧小结
- Photoshop CS3教程:GIF图像格式的设置技巧
- 快速入门-Excel2013单元格格式设置技巧-图文解析-01-预定义--数值、货币、会计专用
- Myeclipse技巧-jsp设置默认编码格式
- 【Mac OS X 使用技巧-1】- 鼠标设置大尺寸-方法
- 【技巧】oracle显示格式设置