视频聊天源码,IOS 保存图片、视频到自定义相簿
视频聊天源码,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 保存图片、视频到自定义相簿相关推荐
- 一对一 视频聊天源码,不要小瞧社交平台的盈利方式
视频聊天源码的出现填补了社交行业没有代表型软件的空缺,它不仅提升了交友双方的交互性,还有效稳定了推广.收益方式.尽管现在娱乐软件都有些倾向于社交软件的发展,但事实证明,它们的社交方式完全不够,无法满足 ...
- 直播视频app源码,保存图片到系统相册
直播视频app源码,保存图片到系统相册相关的代码 public static void saveImageToGallery(Context context, Bitmap bmp) {// 首先保存 ...
- 一对一视频聊天源码中的语言包应该如何开发
作为专业的一对一视频聊天源码开发服务商,与国外客户打交道是必不可少的,但是由于语言不同所以在开发和后期搭建部署时会遇到一些障碍. 除此之外还需要考虑国外客户在其所在国家上线运营时的语言问题,这就需要开 ...
- 视频聊天源码开发,如何进行代码优化
前言 公司的视频聊天源码,有不少类14年的代码也有,可谓见证了该项目的持续辉煌,结果一搜,有些类没有被调用,看来当年的开发者不忍心删掉,就持续到现在了.我相信不少项目都会出现这种情况,要么先注释掉,要 ...
- 短视频app源码、小视频源码存储功能如何实现?
在短视频app源码(小视频源码)开发中,考虑到后期用户上传短视频时需要大量应用到存储功能,故而需要实现这一功能,具体需要怎么做呢,本文将以云豹短视频app源码为例,为大家进行讲解. 一.阅读前请注意: ...
- 浅谈:1对1直播源码一对一视频聊天源码
借助直播行业2018年平稳发展的东风,1对1直播源码开源平台开发受到了广泛地关注.正如直播源码那样,通过1对1直播源码可以快速搭建部署一个一对一视频聊天系统平台.而一对一视频聊天系统平台的功能具有更强 ...
- 短视频app源码:yoo视频更名火锅视频,开启长带短新模式
文/布谷安妮来源/山东布谷鸟网络 网络视频时代的到来,不仅意味着平台为草根创意人才获得成功提供了渠道,而且也有助于重新提振音乐工业.电影工业.电视工业甚至竞技体育产业的发展水平.无论是在美国.中国还是 ...
- 短视频php源码,短视频平台开发,上传短视频
一.用户选择视频 1.微信选中视频接口 wx.chooseVideo(Object object) 拍摄视频或从手机相册中选视频.参数 Object object 属性 类型 默认值 是否必填 说明 ...
- 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 ...
最新文章
- python进行矩阵计算公式_纯python进行矩阵的相乘运算的方法示例
- 状态栏背景颜色(转载)
- 未与信任 SQL Server 连接相关联
- 等价类划分测试—身份证
- Activity 设置SingleTask模式,当栈中已有Activity实例时的生命周期
- 七款经典4.2v锂电池充电电路图详解 - 全文
- 单片机驱动mos管电路图
- android系统登录不了网络,如何解决Android系统搜索不到无线网络信号
- 前馈神经网络中的“前馈”指的是什么意思
- 小学是否有计算机专业,小学计算机教学计划
- python井字棋游戏大作业实验报告_Part 1.2 - 实现一个井字棋游戏的gym环境
- hive 以beeline的模式启动
- 3ds max不能完全自定义设置FOVX和FOVY(3ds max 2014)
- input输入框禁止修改的方法
- 【机器翻译】机器翻译入门
- FT232RL制作的USB转uart ttl,rs232,rs485.兼容3.3V及5V接磁珠
- 腾格里沙漠部分污染地被填埋 记者采访被限自由
- 在windows下如何配置RTT开发环境?
- 程序人生:一直加班也不是办法!2021,程序员的出路在哪里?
- ERROR: ExpansionError during parsing