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:@"保存失败"];
                    }
                }];
                

先这样

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值