前言:

  目前关于rn比较知名并且封装好的图片选择控件很多,不过能同时支持多图片上传,个数控制兼容iOS/Ad的却寥寥无几,而今天介绍的这款框架可以实现:图片裁剪、最大图片个数限制、拍照、本地相册等功能。

效果:

      

使用简介:

原理:react-native-syan-image-picker多图片选择器:
  Android 基于 PictureSelector 2.0
  iOS 基于 TZImagePickerController 1.9.0

iOS/android配置:具体步骤参考:https://github.com/syanbo/react-native-syan-image-picker

核心代码:

  1. import ImagePicker from 'react-native-syan-image-picker'
  2.  
  3. /**
  4. * 默认参数
  5. */
  6. const options = {
  7. imageCount: 6, // 最大选择图片数目,默认6
  8. isCamera: true, // 是否允许用户在内部拍照,默认true
  9. isCrop: false, // 是否允许裁剪,默认false
  10. CropW: ~~(width * 0.6), // 裁剪宽度,默认屏幕宽度60%
  11. CropH: ~~(width * 0.6), // 裁剪高度,默认屏幕宽度60%
  12. isGif: false, // 是否允许选择GIF,默认false,暂无回调GIF数据
  13. showCropCircle: false, // 是否显示圆形裁剪区域,默认false
  14. showCropFrame: true, // 是否显示裁剪区域,默认true
  15. showCropGrid: false // 是否隐藏裁剪区域网格,默认false
  16. };
  17.  
  18. /**
  19. * 以Callback形式调用
  20. * 1、相册参数暂时只支持默认参数中罗列的属性;
  21. * 2、回调形式:showImagePicker(options, (err, selectedPhotos) => {})
  22. * 1)选择图片成功,err为null,selectedPhotos为选中的图片数组
  23. * 2)取消时,err返回"取消",selectedPhotos将为undefined
  24. * 按需判断各参数值,确保调用正常,示例使用方式:
  25. * showImagePicker(options, (err, selectedPhotos) => {
  26. * if (err) {
  27. * // 取消选择
  28. * return;
  29. * }
  30. * // 选择成功
  31. * })
  32. *
  33. * @param {Object} options 相册参数
  34. * @param {Function} callback 成功,或失败回调
  35. */
  36.  
  37. /**
  38. * 以Promise形式调用
  39. * 1、相册参数暂时只支持默认参数中罗列的属性;
  40. * 2、使用方式
  41. * 1)async/await
  42. * handleSelectPhoto = async () => {
  43. * try {
  44. * const photos = await SYImagePicker.asyncShowImagePicker(options);
  45. * // 选择成功
  46. * } catch (err) {
  47. * // 取消选择,err.message为"取消"
  48. * }
  49. * }
  50. * 2)promise.then形式
  51. * handleSelectPhoto = () => {
  52. * SYImagePicker.asyncShowImagePicker(options)
  53. * .then(photos => {
  54. * // 选择成功
  55. * })
  56. * .catch(err => {
  57. * // 取消选择,err.message为"取消"
  58. * })
  59. * }
  60. * @param {Object} options 相册参数
  61. * @return {Promise} 返回一个Promise对象
  62. */

小技巧:iOS拍照为英文,如果需要设置成中文简体,请看这篇:《iOS设置拍照retake和use按钮为中文简体》

到此已经结束了,总体来说使用还是很方便的,如有使用上的问题或者疑问欢迎评论留言~

react-native多图选择、图片裁剪(支持ad/ios图片个数控制)的更多相关文章

  1. 【React Native】进阶指南之一(特定平台、图片加载、动画使用)

    一.特定平台代码 React Native提供了两种方法来区分平台: 使用Platform模块: 使用特定平台扩展名: 1.Platform模块 React Native提供了一个检测当前运行平台的模 ...

  2. [RN] React Native 下实现底部标签(支持滑动切换)

    上一篇文章 [RN] React Native 下实现底部标签(不支持滑动切换) 总结了不支持滑动切换的方法,此篇文章总结出 支持滑动 的方法 准备工作之类的,跟上文类似,大家可点击上文查看相关内容. ...

  3. iOS圆形图片裁剪,以及原型图片外面加一个圆环

    废话不多说,直接上代码 #import "ViewController.h" @interface ViewController () @property (nonatomic,s ...

  4. 23.Quick QML-简单且好看的图片浏览器-支持多个图片浏览、缩放、旋转、滑轮切换图片

    之前我们已经学习了Image.Layout布局.MouseArea.Button.GroupBox.FileDialog等控件. 所以本章综合之前的每章的知识点,来做一个图片浏览器,使用的Qt版本为Q ...

  5. 基于图片识别服务的IOS图片识别程序

    由于TensorFlow提供的IOS版Demo相对于Android版识别率不高,所以开发了通过识别服务进行图片识别的IOS版程序. 该程序基于图片识别服务(http://www.cnblogs.com ...

  6. 前端手势控制图片插件书写四(图片上传及Ios图片方向问题)

    1.在图片上传中,使用的input的type为File的属性.使用filereader的Api let that = this; var file = document.getElementById( ...

  7. react native android6+拍照闪退或重启的解决方案

    前言 android 6+权限使用的时候需要动态申请,那么在使用rn的时候要怎么处理拍照权限问题呢?本文提供的是一揽子rn操作相册.拍照的解决方案,请看正文的提高班部分. 解决步骤 1.Android ...

  8. [RN] React Native 自定义 底部 弹出 选择框 实现

    React Native 自定义 底部选择框 实现 效果如图所示: 实现方法: 一.组件封装 CustomAlertDialog.js import React, {Component} from ' ...

  9. 深入浅出 React Native:使用 JavaScript 构建原生应用

    深入浅出 React Native:使用 JavaScript 构建原生应用 链接:https://zhuanlan.zhihu.com/p/19996445 原文:Introducing React ...

随机推荐

  1. Codeforces 858A. k-rounding 数论

    题目: 题意:输入n和k,找到一个最小的数,满足末尾有至少k个0和是n的倍数. 最小的情况 ans = n,最大的情况 ans = n*pow(10,k). 令 k = pow(10,k); 我们发现 ...

  2. 宿命的PSS

    宿命的PSS 时间限制: 1 Sec  内存限制: 128 MB提交: 60  解决: 37[提交][状态][讨论版] 题目描述 最小生成树P.S.S在宿命的指引下找到了巫师Kismi.P.S.S希望 ...

  3. python---time模块使用详解

    python中的time模块提供一些方法用来进行关于时间的操作,time模块中有以下方法可供使用: time() --- 返回当前时间的时间戳. 调用:time.time(),  可用于计算程序运行的 ...

  4. [js高手之路] html5 canvas动画教程 - 匀速运动

    匀速运动:指的是物体在一条直线上运动,并且物体在任何相等时间间隔内通过的位移都是相等的.其实就是匀速直线运动,它的特点是加速度为0,从定义可知,在任何相等的时间间隔内,速度大小和方向是相同的. < ...

  5. PHP抓取网页图片

    <?php set_time_limit(0);//抓取不受时间限制 if($_POST['Submit']=="开始抓取"){ $URL=$_POST['link']; g ...

  6. 百度的js日历

    <title>百度的Js日历,值得一看</title> <style> body,td,.p1,.p2,.i{font-family:arial} body{mar ...

  7. wpf 制作必输项的*标记

    直接引用帮助文档上的话吧,以免下次忘记! AdornedElementPlaceholder 类 .NET Framework 3.5   其他版本   此主题尚未评级 - 评价此主题   更新:20 ...

  8. marked插件在线实时解析markdown的web小工具

    访问地址: https://mdrush.herokuapp.com/ github项目: https://github.com/qcer/MDRush 实现简介: 1.动态数据绑定 借助Vuejs, ...

  9. 从给数组中的对象去重看Javascript中的reduce()

    假设有这样一个数组: let person = [ {id: 0, name: "小明"}, {id: 1, name: "小张"}, {id: 2, name ...

  10. C#类的学习

    ①类的定义是以关键字 class 开始,后跟类的名称.类的主体,包含在一对花括号内.下面是类定义的一般形式: 类的修饰符 class 类名 :继承的类{ //类的成员 } 请注意: 如果要访问类的成员 ...