最近做了一个壁纸类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获取,展示,保存相关推荐

  1. IOS中获取各个文件的目录路径的方法和NSFileManager类

    转自:http://blog.sina.com.cn/s/blog_5fb39f910101di92.html IOS中获取各种文件的目录路径的方法 iphone沙箱模型的有四个文件夹,分别是什么,永 ...

  2. 如何用python获取和保存B站历史播放记录

    为什么要保存 B 站视频的播放记录呢? 因为 B 站的历史记录,最多保存 3 个月,超过 3 个月自动清除.所以我专门写一个脚本,将历史记录导出,保存在数据库中,一来是是以备以后需要时能够找到,二来也 ...

  3. iOS音频---获取元数据

    iOS音频-获取元数据 参考文档: iOS音频播放 (四):AudioFile More-iOS开发中的音频相关内容总结 在Core Audio中使用AudioFileID指向一个audio file ...

  4. REST接口GET方法获取文件保存到本地(C#)

    REST接口GET方法获取文件保存到本地(C#) using System; using System.Collections.Generic; using System.Linq; using Sy ...

  5. matlab中获取view,ios 怎么获取一个view的位置

    ios 怎么获取一个view的位置以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ios 怎么获取一个view的位置 打 ...

  6. 获取和保存当前屏幕的截图 实现的C++代码如下

    实现的C++代码如下: /** * 获取和保存当前屏幕的截图 */ private void getandsavecurrentimage() { //1 构建bitmap windowmanager ...

  7. python获取手机号码归属地_Python批量获取并保存手机号归属地和运营商的示例

    从Excel读取一组手机号码,批量查询该手机号码的运营商和归属地,并将其追加到该记录的末尾. import requests import json import xlrd from xlutils. ...

  8. iOS UITableView获取特定位置的cell

    代码地址如下: http://www.demodashi.com/demo/13307.html 一.tableView双级联动 以上两种效果比较类似,实现的关键在于都是需要获得在滑动过程中滑动到ta ...

  9. java获取微信的通讯录,java微信开发API第三步 微信获取以及保存接口调用凭证

    微信如何获取以及保存接口调用凭证,下面就为大家进行介绍 一.说明 *详细说明请参考前两篇文章. *本文分为三部分: 接口调用凭证access_token的作用以及解释 如何获取接口调用凭证access ...

最新文章

  1. 银江科技企业课堂小结
  2. 2020年人工神经网络第二次作业-参考答案第二题
  3. 编写Linux内核模块——第三部分:按键和发光二极管
  4. [轉]俞老师在同济大学的演讲词:度过有意义的生命
  5. Codeforces 1093C (思维+贪心)
  6. css的input文本框的 propertychange、focus、blur
  7. 全文搜索引擎 ElasticSearch 还是 Solr?
  8. mxnet安装(Jetson)
  9. vMotion、SvMotion、HA和FT的详细对比说明
  10. 软件开发工程师:程序员的职业规划就像软件工程
  11. NB-Iot烟感02:NB-IOT概念和技术特点
  12. BPM 与 SOA的演进与展望
  13. 图像处理黑科技—破解文档识别难题(PS检测、弯曲拉平、切边切片、摩尔纹)
  14. 主从表mysql外键_主从表主键外键
  15. 统一服务消息 【公众号和小程序 模板消息下发统一openId解惑】
  16. 怎样实现在微信中直接下载APK
  17. sd卡驱动分析之host
  18. php后端管,管理后台-后端-PHP篇
  19. springMVC中json转换器的配置
  20. L1-054 福到了 (15分)

热门文章

  1. 用dreamweaver 8打开gsp文件
  2. 一些程序源代码的网站
  3. NotePad++ debug插件Analyse Dialog使用
  4. java向数据库插入数据时的错误: Duplicate entry ‘‘ for key ‘PRIMARY‘ 问题解决
  5. 程序员问HR:“专科有经验和本科应届生你选谁?”答案很现实
  6. Java后端2017书单推荐
  7. C语言学习(指针)+PID系统
  8. STM32G431+P-NUCLEO-IHM03开发套件调试3(p-nucleo-ihm03套件)-FOC基础原理介绍
  9. 来自腾讯无线研发的经验分享
  10. 微信支付(JsApi)总结