视频聊天源码,IOS 保存图片、视频到自定义相簿实现的相关代码
1、检测相簿以及创建相簿:

/** 创建自定义相册 */
+(void)isExistFolder:(NSString * _Nonnull)folderNameandBackaction:(void(^ _Nullable)(PHAssetCollection * _Nullable assetCollection))backAction{__block BOOL isExists = NO;//首先获取用户手动创建相册的集合PHFetchResult *collectonResuts = [PHCollectionList fetchTopLevelUserCollectionsWithOptions:nil];//对获取到集合进行遍历[collectonResuts enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {PHAssetCollection *assetCollection = obj;//folderName是我们写入照片的相册if ([assetCollection.localizedTitle isEqualToString:folderName])  {isExists = YES;if (backAction) backAction(assetCollection);}}];if (!isExists) {if (backAction) backAction(nil);}
}+(void)createFolder:(NSString *_Nonnull)folderNameandBackaction:(void(^ _Nullable)(PHAssetCollection *_Nullable assetCollection))backAction {[Utils isExistFolder:folderNameandBackaction:^(PHAssetCollection * _Nullable assetCollection) {//存在if (assetCollection) {if (backAction) backAction(assetCollection);}//不存在else{[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{//添加HUD文件夹[PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:folderName];} completionHandler:^(BOOL success, NSError * _Nullable error) {if (success) {NSLog(@"创建相册文件夹成功!");[Utils isExistFolder:folderNameandBackaction:^(PHAssetCollection * _Nullable assetCollection) {if (backAction) backAction(assetCollection);}];} else {NSLog(@"创建相册文件夹失败:%@", error);if (backAction) backAction(nil);}}];}}];
}

上面代码需要视频聊天源码导入系统文件 #import <Photos/Photos.h> ,并做好相册访问权限检测,实例如下:

//MARK:相册权限检测[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {if (status != PHAuthorizationStatusAuthorized) {NSLog(@"开启权限设置");//[Utils openSetting];return;}}];

2、保存图片到自定义相簿

//截图UIImage *imgQRCode = [Utils screenShotForView:self.contentView];//保存图片[Utils createFolder:K_APP_NAMEandBackaction:^(PHAssetCollection *assetCollection) {NSLog(@"assetCollection:%@",assetCollection);dispatch_async(dispatch_get_main_queue(), ^{[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{//请求创建一个AssetPHAssetChangeRequest *assetRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:imgQRCode];//请求编辑相册PHAssetCollectionChangeRequest *collectonRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:assetCollection];//为Asset创建一个占位符,放到相册编辑请求中PHObjectPlaceholder *placeHolder = [assetRequest placeholderForCreatedAsset];//相册中添加图片[collectonRequest addAssets:@[placeHolder]];} completionHandler:^(BOOL success, NSError *error) {if (success) {NSLog(@"保存二维码成功!");dispatch_async(dispatch_get_main_queue(), ^{[MBProgressHUD showSuccess:@"已保存到系统相册"];});} else {NSLog(@"保存二维码失败:%@", error);dispatch_async(dispatch_get_main_queue(), ^{[MBProgressHUD showError:error.localizedDescription];});}}];});}];
screenShotForView 为项目中生成截图的静态方法,此处设置为自己需要保存的图片 UIImage 对象即可。K_APP_NAME 为系统的全局宏常量,此处值为当前 app名称,实际改为 相簿(相册)名称即可/** 项目名 */
#define K_APP_NAME [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CFBundleDisplayName"]

3、保存视频到自定义相簿

//videoPath为视频下载到本地之后的本地路径
- (void)saveVideoToAlbum:(NSURL *)videoPath{__weak typeof(self) weakSelf = self;[Utils createFolder:K_APP_NAMEandBackaction:^(PHAssetCollection *assetCollection) {NSLog(@"assetCollection:%@",assetCollection);dispatch_async(dispatch_get_main_queue(), ^{[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{//请求创建一个AssetPHAssetChangeRequest *assetRequest = [PHAssetChangeRequest creationRequestForAssetFromVideoAtFileURL:videoPath];//请求编辑相册PHAssetCollectionChangeRequest *collectonRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:assetCollection];//为Asset创建一个占位符,放到相册编辑请求中PHObjectPlaceholder *placeHolder = [assetRequest placeholderForCreatedAsset];//相册中添加视频[collectonRequest addAssets:@[placeHolder]];} completionHandler:^(BOOL success, NSError *error) {if (success) {NSLog(@"保存视频成功!");dispatch_async(dispatch_get_main_queue(), ^{[MBProgressHUD showSuccess:@"视频下载成功,已保存到系统相册"];//刷新UI//...});} else {NSLog(@"保存视频失败:%@", error);dispatch_async(dispatch_get_main_queue(), ^{[MBProgressHUD showError:error.localizedDescription];});}}];});}];
}

保存图片或视频,就是视频聊天源码里面一句代码PHAssetChangeRequest 指定不同类型,可将里面进行再次分装,已达到高效、精简便于维护的目的。
以上就是视频聊天源码,IOS 保存图片、视频到自定义相簿实现的相关代码, 更多内容欢迎关注之后的文章

视频聊天源码,IOS 保存图片、视频到自定义相簿相关推荐

  1. 一对一 视频聊天源码,不要小瞧社交平台的盈利方式

    视频聊天源码的出现填补了社交行业没有代表型软件的空缺,它不仅提升了交友双方的交互性,还有效稳定了推广.收益方式.尽管现在娱乐软件都有些倾向于社交软件的发展,但事实证明,它们的社交方式完全不够,无法满足 ...

  2. 直播视频app源码,保存图片到系统相册

    直播视频app源码,保存图片到系统相册相关的代码 public static void saveImageToGallery(Context context, Bitmap bmp) {// 首先保存 ...

  3. 一对一视频聊天源码中的语言包应该如何开发

    作为专业的一对一视频聊天源码开发服务商,与国外客户打交道是必不可少的,但是由于语言不同所以在开发和后期搭建部署时会遇到一些障碍. 除此之外还需要考虑国外客户在其所在国家上线运营时的语言问题,这就需要开 ...

  4. 视频聊天源码开发,如何进行代码优化

    前言 公司的视频聊天源码,有不少类14年的代码也有,可谓见证了该项目的持续辉煌,结果一搜,有些类没有被调用,看来当年的开发者不忍心删掉,就持续到现在了.我相信不少项目都会出现这种情况,要么先注释掉,要 ...

  5. 短视频app源码、小视频源码存储功能如何实现?

    在短视频app源码(小视频源码)开发中,考虑到后期用户上传短视频时需要大量应用到存储功能,故而需要实现这一功能,具体需要怎么做呢,本文将以云豹短视频app源码为例,为大家进行讲解. 一.阅读前请注意: ...

  6. 浅谈:1对1直播源码一对一视频聊天源码

    借助直播行业2018年平稳发展的东风,1对1直播源码开源平台开发受到了广泛地关注.正如直播源码那样,通过1对1直播源码可以快速搭建部署一个一对一视频聊天系统平台.而一对一视频聊天系统平台的功能具有更强 ...

  7. 短视频app源码:yoo视频更名火锅视频,开启长带短新模式

    文/布谷安妮来源/山东布谷鸟网络 网络视频时代的到来,不仅意味着平台为草根创意人才获得成功提供了渠道,而且也有助于重新提振音乐工业.电影工业.电视工业甚至竞技体育产业的发展水平.无论是在美国.中国还是 ...

  8. 短视频php源码,短视频平台开发,上传短视频

    一.用户选择视频 1.微信选中视频接口 wx.chooseVideo(Object object) 拍摄视频或从手机相册中选视频.参数 Object object 属性 类型 默认值 是否必填 说明 ...

  9. android视频聊天源码下载(wifi)

    原网址:http://www.haolizi.net/example/view_3075.html#download [核心代码] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 ...

最新文章

  1. python进行矩阵计算公式_纯python进行矩阵的相乘运算的方法示例
  2. 状态栏背景颜色(转载)
  3. 未与信任 SQL Server 连接相关联
  4. 等价类划分测试—身份证
  5. Activity 设置SingleTask模式,当栈中已有Activity实例时的生命周期
  6. 七款经典4.2v锂电池充电电路图详解 - 全文
  7. 单片机驱动mos管电路图
  8. android系统登录不了网络,如何解决Android系统搜索不到无线网络信号
  9. 前馈神经网络中的“前馈”指的是什么意思
  10. 小学是否有计算机专业,小学计算机教学计划
  11. python井字棋游戏大作业实验报告_Part 1.2 - 实现一个井字棋游戏的gym环境
  12. hive 以beeline的模式启动
  13. 3ds max不能完全自定义设置FOVX和FOVY(3ds max 2014)
  14. input输入框禁止修改的方法
  15. 【机器翻译】机器翻译入门
  16. FT232RL制作的USB转uart ttl,rs232,rs485.兼容3.3V及5V接磁珠
  17. 腾格里沙漠部分污染地被填埋 记者采访被限自由
  18. 在windows下如何配置RTT开发环境?
  19. 程序人生:一直加班也不是办法!2021,程序员的出路在哪里?
  20. ERROR: ExpansionError during parsing

热门文章

  1. 老骥伏枥,志在千里:如何在40岁后继续做软件开发?
  2. 【iOS】NSOperation
  3. XXE漏洞详解 一文了解XXE漏洞
  4. 用this.$route.meta.title直接修改title不更新解决方案
  5. C# 使用管理员身份运行CMD,修改当前的适配器的IP
  6. MySQL的存储过程——输入参数(in)、输出参数(out)、输入输出参数(inout)
  7. [Java面试]六:常见面试题之设计模式
  8. 用php怎么改文件名
  9. 导弹防御系统[导弹拦截系统]
  10. 编写程序判断大小端的两种方法