CameraRoll模块提供了对手机中保存的图片、视频文件进行遍历访问与操作。
提供两个静态方法
//相当重要
static getPhotos(params: object)
可以得到手机中所有的图片和视频(不仅仅是使用摄像头拍摄的照片、视频,还有各个应用自己下载到手机的图片与视频)
params:对象 一些筛选的规则 有4个成员变量
1.first 数值 希望获取多少张图片的信息
2.groupTypes 字符串 默认为SavedPhotos [Album All Event Faces Library PhotoStream] 仅支持IOS平台 用来指定获取图片或视频的类型
3.assetType 字符串 默认为Photos 表示只获取图片 [All Videos]
4.after 字符串 用来记录上一次获取图片的结束标志 方便可以接着上次的位置继续获取 它的值不能由开发者随意赋予,而是应当在上一次获取图片后保存其值。通常,在Android平台,一开始就给这个值为null,但是在IOS平台,设置为null会抛一个无法捕捉的异常,导致红屏。
返回一个带有图片标识符JSON对象的Promise
Android平台的如下:
IOS平台的如下:
注意:不管是android平台还是ios平台,得到的image对象,可以作为一个整体,传递给Image组件,用来显示图片
可以分批次读取手机中的所有图片:监听ScrollView滑动到底部时,继续getPhotos,这时需要用after成员变量,递归调用getPhotos,当page_info.has_next_page为false时返回
CameralRoll在IOS平台中需要添加链接库才能运行,否则报错找不到api:
1.\node_modules\react-native\Libraries\CameraRoll下的Xcode项目文件RCTCameraRoll.xcodeproj拖动到当前Xcode项目的Libraries目录
2.选中当前项目,在右边选择Build Phases,点击打开子项目Link Binary With Libraris
3.打开第一步插入的RCTCameraRoll.xcodeproj,再打开它的子目录Products,将子目录下的libRCTCameraRoll.a文件拖到Link Binary With Libraris列表中
4.使用Xcode重新运行项目
static saveImageWithTag(tag) 保存一个图片到相册
tag 在安卓上,本参数是一个本地URI(是把本地的图片保存到相册中),例如”file:///sdcard/img.png”.
在iOS设备上可能是以下之一:
1、本地URI 2、资源库的标签 3、非以上两种类型,表示图片数据将会存储在内存中(并且在本进程持续的时候一直会占用内存)。
返回一个Promise,操作成功时返回新的URI。
cameraroll_data.png (78.45 KB, 下载次数: 1)
cameraroll_data.png
cameraroll_data_ios.png (138.99 KB, 下载次数: 1)
ios
ios