批量导入图片和视频到模拟器的相册

  IOS开发中我们经常会用到模拟器调试,模拟器有个主要的好处就是程序启动块,最重要的是如果没有证书的话,我们就只能在模拟器上调试了。使用模拟器调试时我们可能碰到需要从系统相册选择图片的情况,特别是做图片处理类相关的程序时,更是经常用到。

  初始化情况下模拟器中的相册中是空的,所以要想选择,我们就得先导入一些图片。通常的做法是将图片直接拖拽到模拟器上,然后模拟器就会用safari打开,这个时候我们再长按图片就会弹出保存到系统相册的菜单了,这样一个完整的图片保存流程就完成了。但是这中方法有一个明显的缺点就是效率太低,试想你要做图片处理的话肯定得测试各种尺寸,各种比例的图片,这样一个个导入无疑是对程序员的一种摧残。

  那么如何才能批量的导入图片呢?

  我最开始的时候的想法是找到模拟器存放的目录,然后定位到照片文件夹下面,直接把图片拷贝进去不就搞定了。于是打开finder寻找到了模拟器的安装路径,比如6.1的模拟器的路径就是: /Users/maple/Library/Application Support/iPhone Simulator/6.1/

  我们使用命令行进入这个目录,并找到照片文件夹的路径: /Users/maple/Library/Application Support/iPhone Simulator/6.1/Media/DCIM,然后将照片拷贝进去。本以为大功告成,结果重启了模拟器以后发现系统相册较之前毫无变化,想一想应该只因为我们只把图片拷贝进去了,却没有更新系统相册对应的数据库。如果能在拷贝图片的同时,更新系统相册对应的数据库,我猜应该就能搞定了,只是代价比较大,所以只好放弃。

  只好换别的方法了,记得以前做上一个项目的时候好像有一个API是可以保存图片到系统相册的,于是找到这个API: UIImageWriteToSavedPhotosAlbum。想着如果我建一个工程,把要加的图片加到工程里面,然后在程序中通过遍历这些图片,一次调用UIImageWriteToSavedPhotosAlbum这个方法,所以的图片不就全部导入到系统相册了吗?

  说做就做,先写了一个简单的函数试了一下,的确可以达到目的,然后继续完善思路,添加了监测拷贝进度的功能,做了一个简单的进度界面。

  关键的保存图片的函数片段如下:

- (void)saveMediaToCameraRoll
{// // traverse the main bundle to find out all image filesNSMutableArray *picArray = [NSMutableArray arrayWithCapacity:3];NSArray *jpgFiles = [[NSBundle mainBundle] pathsForResourcesOfType:@"jpg" inDirectory:nil];[picArray addObjectsFromArray:jpgFiles];NSArray *pngArray = [[NSBundle mainBundle] pathsForResourcesOfType:@"png" inDirectory:nil];// exclude launch image of this projectNSMutableArray *picExcludeDefault = [NSMutableArray arrayWithArray:pngArray];for (NSString *path in pngArray) {NSArray *pathCom = [path pathComponents];if ([pathCom containsObject:@"Default-568h@2x.png"]|| [pathCom containsObject:@"Default.png"]|| [pathCom containsObject:@"Default@2x.png"]) {[picExcludeDefault removeObject:path];}}pngArray = picExcludeDefault;[picArray addObjectsFromArray:pngArray];// traverse the main bundle to find out all mov filesNSMutableArray *videoArray = [NSMutableArray arrayWithCapacity:3];NSArray *movs = [[NSBundle mainBundle] pathsForResourcesOfType:@"mov" inDirectory:nil];[videoArray addObjectsFromArray:movs];_mediaItemCount = picArray.count + videoArray.count;if (delegate && [delegate respondsToSelector:@selector(saveToUtilStartCopy:)]) {[delegate saveToUtilStartCopy:_mediaItemCount];}// save pic to camera rollfor (id item in picArray) {UIImage *img = [[UIImage alloc] initWithContentsOfFile:item];// Note:save to camera roll is async, so the later item may copy complete than previous item
        UIImageWriteToSavedPhotosAlbum(img, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);[img release];}// save video to camera rollfor (id item in videoArray) {if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(item)) {// Note:save to camera roll is async, so the later item may copy complete than previous item
            UISaveVideoAtPathToSavedPhotosAlbum(item, self, @selector(video:didFinishSavingWithError:contextInfo:), NULL);}else {[self updateProcessWithError:[NSError errorWithDomain:@"copy video error" code:-1 userInfo:nil]];}}
}

  忽略界面更新回调相关的逻辑,程序的主要流程如下:

  1)找到当前程序包中所有的图片文件,注意这块儿要排除掉工程自带的图片如Default.png等;

  2)对找到的所有图片文件调用保存到系统相册的函数。

  经过测试本程序可以实现批量导入图片到系统相册的功能,于是想着更进一步视频是否也可以批量导入呢?经过查找发现也有一个API:  UISaveVideoAtPathToSavedPhotosAlbum,然后顺便添加了批量导入视频的功能,经过测试可以正常导入。

  整个工程的代码在github上,地址: https://github.com/smileEvday/SvSaveToCameraRoll

  

注:转载请注明出处!欢迎大家加我QQ 1592232964,一起讨论共同进步。

IOS:批量导入图片和视频到模拟器的相册相关推荐

  1. 批量导入图片和视频到模拟器的相册

    IOS开发中我们经常会用到模拟器调试,模拟器有个主要的好处就是程序启动块,最重要的是如果没有证书的话,我们就只能在模拟器上调试了.使用模拟器调试时我们可能碰到需要从系统相册选择图片的情况,特别是做图片 ...

  2. Python批量导入图片生成能治疗颈椎病的HTML5版课件

    本文要点:Python文件操作,HTML5的figure元素和CSS3属性的用法. 说明:1):本文图片来自于相关阅读中Python批量导出多个PPT/PPTX文件中每个幻灯片为独立JPG图片或Pyt ...

  3. python批量导入图片_Python批量导入图片生成PowerPoint 2007+文件

    原标题:Python批量导入图片生成PowerPoint 2007+文件 说明:本文是"Python批量爬取微信公众号文章中的图片"的后续文章,用来把从公众号批量抓取的图片还原为P ...

  4. c# orcale 用C#批量导入图片到orcale的表中

    第一步首先:检测orcale数据库是否能够链接成功. 第二步接着:如果可以链接成功,再检查你要插入图片的表是否存在. 第三步接着:如果存在表,让用户选择必要的字段,之后开始批量导入图片. <pr ...

  5. Excel批量导入图片并在右侧单元格备注名称

    如下图所示,小编要分享的是,Excel批量导入图片并在右侧单元格备注名称的操作 (方方格子插件) 1.先看动图演示吧 2.选中A2第一个需要添加图片的单元格 3.然后选择方方格子的图片工具 4.那我们 ...

  6. excel批量导入图片的方法和例子

    内容提要:文章分享了三个excel批量导入图片的典型案例:查找对应姓名的照片.批量导入图片等等,并提供附件下载.对Excel感兴趣的朋友可加 Excel学习交流群:284029260(www.itbl ...

  7. Android之靠谱的把图片和视频插入手机系统相册

    1 需求 把图片和视频插入手机系统相册,网上查了下基本上很乱,没几个靠谱的. 2 结果爆照 3 思路 图片插入系统相册(可以直接插入系统相册,但是我这里多做了一步就是先把图片拷贝到了一个目录再插入系统 ...

  8. Excel中 使用链接 批量导入图片

    ■前言 我之前看到很多使用VBA方式导入图片的. 今天发现,使用复制链接这种方式,也可以导入图片. ■导入方法 <table><img src="C:\MyPicture\ ...

  9. 在PPT中批量导入图片

    我现在有几百张图片,想做成一个PPT(一张一页),但是PPT并不提供类似的功能,不知有什么快捷方法可以导入?谢谢!另外我听说Office 2007不错,我想问问新版本的PPT 2007有什么优点吗? ...

最新文章

  1. 微信小程序把玩(三十五)Video API
  2. ElasticSearch小操之Marvel,Sense
  3. 【mycat】读写分离
  4. Directory lookup for the file xxx.mdf failed with the operating system error 2
  5. *17.解释一下最小生成树
  6. JS验证图片格式和大小并预览
  7. navicat fo mysql 教程_Navicat For MySQL的简单使用教程
  8. UC浏览器电脑版播放视频时出现崩溃怎么解决
  9. 数据结构期末复习之排序
  10. 关于sql查询分析器无法登录的问题
  11. 用友 U8 word模板修改
  12. 浏览器通过域名查找IP地址的过程
  13. mysql的外文图书_外文数据库
  14. 电子计算机里CE,电子计算机上的ce表示什么意思
  15. 亲爱的我把孩子放大了文案解说
  16. MacBook Pro电池0%,接上电源却显示电池没有正在充电的解决方案
  17. 什么是readout function/readout函数
  18. 六、考研数据结构笔记——数组与广义表
  19. Web渗透之信息收集——目录扫描从御剑到Dirbuster
  20. 取消开发商的观点经得住历史考验 ——与《中国经济时报》记者章剑锋对话

热门文章

  1. 二维数组求最小值_05-最大子矩形-最大值减去最小值小于或等于num的子数组数量...
  2. mysql使字段自增_Mysql设置自增字段的方法
  3. c char*转int_C语言中的char类型也有signed和unsigned?字符也有正负之分吗?
  4. cmap参数 plt_Matplotlib入门-5-plt.scatter( )绘制散点图
  5. django_form表单的提交
  6. liferay spring mvc的实现
  7. java array to string_数组到字符串转换(Array to string conversion)
  8. 原理分析_生化分析仪原理结构及参数对比
  9. Vue学习(watch、computed、生命周期、filter)- 学习笔记
  10. 《美团点评》编程题---有一个二维数组(n*n),写程序实现从右上角到左下角沿主对角线方向打印