静态页面和效果就拿微信的发朋友圈的界面来说吧,长按“相机”图标、或者点击“添加图片的+按钮”时假设触发的事件为addPic。

一、事件触发:addPic

/***点击添加图片的图标时触发该事件,该事件用来弹出框让选择是从相册中添加数据还是拍照*  */
function addPic(){  //从底部弹出框让选择是通过相册拍照还是从相册中选择api.actionSheet({title: '添加图片',cancelTitle: '取消',//destructiveTitle: '红色警告按钮',//红色警示按钮标题,一般用于做一些删除之类操作buttons: ['拍摄','从相册选择']}, function(ret, err) {             //ret.buttonIndex:1、拍摄 2、从相册选择 3、取消if(ret.buttonIndex==3){//取消return false;}if(ret.buttonIndex==1){//1-拍摄getPictureByCamera();}else{//从相册中选择getPictureByAlbum();}});
}

api.actionSheet()用来从底部弹出一个框,具体弹出内容可以通过buttons来设置,具体用法和操作可以参考APICloud的官网说明。(PS:这个方法很有用)

二、通过拍照来获取图片(也就是选择一张图片)

function getPictureByCamera(){api.getPicture({sourceType: "camera",//图片源类型,从相册、图片库或相机获取图片,可选项:camera/library/album 默认libraryencodingType: 'png',//返回图片类型,jpg或png,默认值pngmediaValue: 'pic',//媒体类型,图片或视频,可选项:pic-图片 video-视频 all-图片和视频,Android不支持默认picdestinationType: 'url',//返回数据类型,指定返回图片地址或图片经过base64编码后的字符串,可选项:base64/url allowEdit: false,//是否可以选择图片后进行编辑,支持iOS及部分安卓手机,默认值false//quality: 50,//图片质量,只针对jpg格式图片(0-100整数)targetWidth: 100,//压缩后的图片宽度,图片会按比例适配此宽度,默认值:原图宽度targetHeight: 100,saveToPhotoAlbum: false//拍照或录制视频后是否保存到相册,默认值false}, function(ret, err) {if (ret) {if(ret.data.length>0){//拍摄完成取消时,会返回该方法,但是ret.data为空var img = "<a href='javascript:void(0);' class='add_pic' οnclick='previewThePic(this);'><img src='"+ret.data+"' /></a>";$("#picList").append(img);//将选择的图片显示出来if($("#picList").children().length==maxImgCount){//达到显示总数了,那么+按钮隐藏$("#addPicBtn").hide();//添加图片用的+按钮隐藏}  }            }    });
}

注:maxImgCount为发表一个朋友圈最多允许使用的图片数量,我这里是9张。

picList为显示图片的DIV。

addPicBtn为添加图片用的+按钮。

getPicture()方法主要用来用户单张图片,具体用法也可以参考官网。

三、从图册中选择多张图片

这个需要用到一个模块UIMediaScanner,需要在模块库中找到并添加到项目中,然后云编译一下。

添加模块之后测试就不能再使用APICloud官方的APPLoader,因为它没有带我们自己添加的模块。这时候就需要自定义loader。也很简单,在APICloud studio(或者其他APICloud开发工具)中右键项目---->编译自定义loader,它就会自己编译,等编译完成后悔返回一个二维码,扫一扫下载自定义的loader并安装到手机,就可以使用添加的模块了。

注意:自定义的loader有效期为7天,7天过后需要再次编译。而且每次添加模块都要重新编译一下,添加代码不需要重新编译,WIFI同步就能看到效果的。

自定义loader先说到这里,接着说多图片选择。

/***该方法用来弹出框选择图片 * *  */
function getPictureByAlbum(){    //UIMediaScanner 是一个多媒体扫描器,可扫描系统的图片、视频等多媒体资源 var obj = api.require('UIMediaScanner');var imgCount = 9;//默认选9张//还能选择几张imgCount = maxImgCount-$("#picList").children().length;    //alert(imgCount+"\n"+(maxImgCount-imgCount));obj.open({//返回的资源种类,picture(图片),video(视频),all(图片和视频)type: 'picture',//(可选项)图片显示的列数,须大于1column: 3,max: imgCount,//一次性最多选择几张图片,默认为一次最多选择5张。//sort:(可选项)图片排序方式,asc(旧->新),desc(新->旧)sort: {key: 'time',//按照图片创建时间从新到旧排序order: 'desc'},//(可选项)模块各部分的文字内容texts: {stateText: '已选择*项',cancelText: '取消',finishText: '完成'},styles: {bg: '#fff',mark: {icon: '',//position: 'bottom_right',position:'top_right',size: 20},nav: {bg: '#eee',stateColor: '#000',stateSize: 18,cancleBg: 'rgba(0,0,0,0)',cancelColor: '#000',cancelSize: 18,finishBg: 'rgba(0,0,0,0)',finishColor: '#000',finishSize: 18}},exchange:true,//是否交换‘确定’和‘取消’按钮的位置(默认‘取消’按钮在右边,‘确定’按钮在左边),默认值falseshowPreview:true,//是否支持返回预览事件//是否支持打开已选图片预览效果,默认为false。当本参数为 true 时,styles-》mark-》position 参数恒为 top_right,切此时模块会为 mark 提供一个未选中时的图标。showBrowser:true     }, function(ret) { // 获取图片数据并处理if (ret) {//判断点击的是不是cancel和preview,若是那么不处理//preview模式下,有取消和完成两个按钮,点击取消时会自动跳转到选择图片的界面,点击完成按钮时会提交ajax,也就是会回调到该处//且会触发至少两次,一次为confirm,其他次数为preview,只处理为confirm的情况if(ret.eventType=="cancel" || ret.eventType=="preview"){return false;}                    for(var i=0;i<ret.list.length;i++){//alert(ret.list[i].path);   //alert(JSON.stringify(ret.list[i]));var img = "<a href='javascript:void(0);' class='add_pic' οnclick='previewThePic(this);'><img src='"+ret.list[i].path+"' /></a>";$("#picList").append(img);//将选择的图片显示出来}if($("#picList").children().length==maxImgCount){//达到显示总数了,那么+按钮隐藏$("#addPicBtn").hide();}           }}

注意点:在测试的时候,发现UIMediaScanner有一个问题:它会扫描出不存在的照片,如第一次扫描的时候扫描出A.png,后台把A.png删除再扫描,还是会扫描出A.png。清除UIMediaScanner的缓存、APP的缓存、甚至于卸载了APP还是会扫描出A.png,也不知道这是什么问题。

选择图片就写到这里,祝好运!

APICloud(二):选择一张或多张图片相关推荐

  1. Discuz!门户列表页,文章中无图片时,随机选择一张作为封面

    在门户列表页中,默认为当文章中包含有图片是选择第一张作为列表页上的封面.如下图: 但是有时候为了美观与一致性需要在文章里面没有包含图片时,封面照样显示图片.那怎么办? 方法(Discuz!X3.2亲测 ...

  2. SRPG游戏开发(五)第三章 绘制地图 - 二 绘制一张简单地图

    返回目录 第三章 绘制地图 一 导入素材 点击进入 二 绘制一张简单地图 这一节我们来看如何绘制一张地图. 1     新建Grid与Tilemap 在Hierarchy面板中,点击Create/2D ...

  3. php获取文章封面图片,Discuz!无图片文章中列表页自动提取图片随机选择一张作为封面 - 魔幻精灵の点滴记忆...

    在门户列表页中,默认为党文章中包含有图片是选择第一张作为列表页上的封面.如下图: 但是有时候为了美观与一致性需要在文章里面没有包含图片时,封面照样显示图片.那怎么办? 方法(Discuz!X3.2亲测 ...

  4. 国二C语言文字选择程序选择,全国计算机等级考试二级C语言题型总结(二)——选择循环结构程序设计部分.doc...

    全国计算机等级考试二级C语言题型总结(二)--选择循环结构程序设计部分 C语言第二部分上机题型总结 选择结构部分: if结构题型总结 (案例1) 企业发放的奖金根据利润提成.利润(I)低于或等于10万 ...

  5. 9_InfluxDB常用函数(二)选择类函数(TOP() BOTTOM() FIRST() LAST() MAX() MIN() PERCENTILE())

    9.InfluxDB学习之InfluxDB常用函数(二)选择类函数 转自:http://www.linuxdaxue.com/influxdb-study-influxdb-selectors-fun ...

  6. [html] input上传文件可以同时选择多张吗?怎么设置?

    [html] input上传文件可以同时选择多张吗?怎么设置? <input type="file" multiple /> 个人简介 我是歌谣,欢迎和大家一起交流前后 ...

  7. [html] input上传文件可以同时选择多张吗?怎么设置?

    [html] input上传文件可以同时选择多张吗?怎么设置? <input type="file" multiple="multiple" value= ...

  8. 某市体育彩票采用整数1,2,3,…,36表示36种体育运动,一张彩票可选择7种运动。编写程序,选择一张彩票的号码,使这张彩票的7个号码之和是105且相邻两个号码之差按顺序依次是1,2,3,4,5,6。

    某市体育彩票采用整数1,2,3,-,36表示36种体育运动,一张彩票可选择7种运动.编写程序,选择一张彩票的号码,使这张彩票的7个号码之和是105且相邻两个号码之差按顺序依次是1,2,3,4,5,6. ...

  9. 计算机二级c语言求水仙花数和完数,预测江苏省高校计算机二级C考试上机编程题之二特殊数张柏雄.doc...

    预测江苏省高校计算机二级C考试上机编程题之二特殊数张柏雄 内容 一.特殊数:素数平方是各位数不相同的数 二.495三位陷阱数 三.可分解的整数 四.闰年计算题 五.数制变换题 六.水仙花数题 七.亲密 ...

最新文章

  1. 番外:Spring MVC环境搭建和Mybatis配置避坑篇
  2. 出国留学想申请国家留学基金委的奖学金?传说中的csc! 从这里入手就对了!
  3. if condition 大于_条码打印软件之脚本编程的应用(if语句)
  4. SimBERTv2来了!融合检索和生成的RoFormer-Sim模型
  5. 教你如何用手机查看哪些人在蹭你家的WIFI,然后将他们屏蔽!
  6. linux netbeans 中文乱码,浅谈Linux Netbeans字体反锯齿处理
  7. 理论基础 —— 排序 —— 计数排序
  8. k8s ubuntu cni_周一见 | CNCF 人事变动、最新安全漏洞、K8s 集群需警惕中间人攻击...
  9. 查看已有设置_腾讯企点呼叫中心如何查看企点电话产生的数据报表?
  10. 三菱驱动器参数表_三菱 M 参数表
  11. 算法的稳定性matlab,基于MATLAB地震反应谱数值算法的稳定性和精度分析
  12. 解决windows7系统netmeeting无法(安装)使用问题
  13. 抖音上很火的3D立体动态相册实现代码!
  14. 【史上最详细】信贷中逾期天数统计说明
  15. 周易六十四卦——大畜卦
  16. node-sass报错
  17. 【Java写的碰碰球游戏(2) 】
  18. C#中.snk文件的作用
  19. Vertica ros和wos介绍
  20. Transformer如何用于视频?最新「视频Transformer」2022综述

热门文章

  1. mysql5_7winx64,MySQL 5.7.30 Winx64 安装
  2. linux怎么共享存储,什么是ISCSI,及Linux下怎么样通过ISCSI实现共享存储
  3. uniapp App端后台间隔时间发送定位功能实现
  4. return true
  5. 淘宝商品详情API接口(商品价格接口,商品属性接口)
  6. 如何禁止IE浏览器访问我的网页
  7. 服务器生成微信sign,签名生成方法
  8. 职场必知的十条“钻石”心态
  9. 2021年中国驴行业存栏量延续下降走势,存栏基数降低使得驴肉供应减少,价格持续走强[图]
  10. GA-SVM算法python实现