iOS livephtot获取,展示,保存
最近做了一个壁纸类app,涉及到了livephoto相关的内容,做个记录
基本思路
livephoto实际上是由一张jpg图片和一段mov视频组成,想要从网络后台获取livephoto, 后台应该是以一张图片对应一段视频的方式存储livephoto,手机端通过网络下载好对应的图片和视频之后.利用系统Photos.framew中提供的方法将图片和视频合成PHLivePhoto,之后可以通过PhotoUI中的PHLivePhotoView来展示PHLivePhoto对象,或者通过PHAssetCreationRequest的方法保存livephoto到相册
代码实现
首先导入framework,之后引入头文件
#import <Photos/Photos.h>
#import <PhotosUI/PhotosUI.h>
在下载完图片与视频并保存在本地之后,我们通过传入下载好的视频与图片的本地url来生成PHLivePhoto对象
[PHLivePhoto requestLivePhotoWithResourceFileURLs:@[self.movUrl ,imgUrl] placeholderImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]] targetSize:self.imageView.bounds.size contentMode:PHImageContentModeAspectFill resultHandler:^(PHLivePhoto * _Nullable livePhoto, NSDictionary * _Nonnull info) {}];
要展示livephoto, 需要创建PHLivePhotoView控件,再将上个方法得到的PHLivePhoto对象赋值给PHLivePhotoView,之后PHLivePhotoView调用播放方法就可以开始展示livephoto了
self.livePhotoView = [[PHLivePhotoView alloc] init];//创建
self.livePhotoView.livePhoto = livePhoto;// 赋值[self.livePhotoView startPlaybackWithStyle:PHLivePhotoViewPlaybackStyleFull]; // 播放
保存livephoto到相册
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{PHAssetCreationRequest * req = [PHAssetCreationRequest creationRequestForAsset];[req addResourceWithType:PHAssetResourceTypePhoto fileURL:self.imgUrl options:nil];[req addResourceWithType:PHAssetResourceTypePairedVideo fileURL:self.movUrl options:nil];} completionHandler:^(BOOL success, NSError * _Nullable error) {if (success) {[self showMessage:@"已保存至相册"];}else{[self showMessage:@"保存失败"];}}];
先这样
iOS livephtot获取,展示,保存相关推荐
- IOS中获取各个文件的目录路径的方法和NSFileManager类
转自:http://blog.sina.com.cn/s/blog_5fb39f910101di92.html IOS中获取各种文件的目录路径的方法 iphone沙箱模型的有四个文件夹,分别是什么,永 ...
- 如何用python获取和保存B站历史播放记录
为什么要保存 B 站视频的播放记录呢? 因为 B 站的历史记录,最多保存 3 个月,超过 3 个月自动清除.所以我专门写一个脚本,将历史记录导出,保存在数据库中,一来是是以备以后需要时能够找到,二来也 ...
- iOS音频---获取元数据
iOS音频-获取元数据 参考文档: iOS音频播放 (四):AudioFile More-iOS开发中的音频相关内容总结 在Core Audio中使用AudioFileID指向一个audio file ...
- REST接口GET方法获取文件保存到本地(C#)
REST接口GET方法获取文件保存到本地(C#) using System; using System.Collections.Generic; using System.Linq; using Sy ...
- matlab中获取view,ios 怎么获取一个view的位置
ios 怎么获取一个view的位置以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ios 怎么获取一个view的位置 打 ...
- 获取和保存当前屏幕的截图 实现的C++代码如下
实现的C++代码如下: /** * 获取和保存当前屏幕的截图 */ private void getandsavecurrentimage() { //1 构建bitmap windowmanager ...
- python获取手机号码归属地_Python批量获取并保存手机号归属地和运营商的示例
从Excel读取一组手机号码,批量查询该手机号码的运营商和归属地,并将其追加到该记录的末尾. import requests import json import xlrd from xlutils. ...
- iOS UITableView获取特定位置的cell
代码地址如下: http://www.demodashi.com/demo/13307.html 一.tableView双级联动 以上两种效果比较类似,实现的关键在于都是需要获得在滑动过程中滑动到ta ...
- java获取微信的通讯录,java微信开发API第三步 微信获取以及保存接口调用凭证
微信如何获取以及保存接口调用凭证,下面就为大家进行介绍 一.说明 *详细说明请参考前两篇文章. *本文分为三部分: 接口调用凭证access_token的作用以及解释 如何获取接口调用凭证access ...
最新文章
- 银江科技企业课堂小结
- 2020年人工神经网络第二次作业-参考答案第二题
- 编写Linux内核模块——第三部分:按键和发光二极管
- [轉]俞老师在同济大学的演讲词:度过有意义的生命
- Codeforces 1093C (思维+贪心)
- css的input文本框的 propertychange、focus、blur
- 全文搜索引擎 ElasticSearch 还是 Solr?
- mxnet安装(Jetson)
- vMotion、SvMotion、HA和FT的详细对比说明
- 软件开发工程师:程序员的职业规划就像软件工程
- NB-Iot烟感02:NB-IOT概念和技术特点
- BPM 与 SOA的演进与展望
- 图像处理黑科技—破解文档识别难题(PS检测、弯曲拉平、切边切片、摩尔纹)
- 主从表mysql外键_主从表主键外键
- 统一服务消息 【公众号和小程序 模板消息下发统一openId解惑】
- 怎样实现在微信中直接下载APK
- sd卡驱动分析之host
- php后端管,管理后台-后端-PHP篇
- springMVC中json转换器的配置
- L1-054 福到了 (15分)
热门文章
- 用dreamweaver 8打开gsp文件
- 一些程序源代码的网站
- NotePad++ debug插件Analyse Dialog使用
- java向数据库插入数据时的错误: Duplicate entry ‘‘ for key ‘PRIMARY‘ 问题解决
- 程序员问HR:“专科有经验和本科应届生你选谁?”答案很现实
- Java后端2017书单推荐
- C语言学习(指针)+PID系统
- STM32G431+P-NUCLEO-IHM03开发套件调试3(p-nucleo-ihm03套件)-FOC基础原理介绍
- 来自腾讯无线研发的经验分享
- 微信支付(JsApi)总结