3***@qq.com
3***@qq.com
  • 发布:2017-07-14 12:14
  • 更新:2017-07-14 12:28
  • 阅读:1387

【报Bug】图片多选模式下,不能钩中调用相机产生的图片路径

分类:HTML5+

详细问题描述
[内容]
【附件里有最小的“纯净”的重现问题的源码工程直接可运行,有备注】

在ios设备上,拍照得到的图片路径有个缺陷(不知道是不是没有理解对造成的):

cmr.captureImage( successCB, errorCB, option );

拍照成功后,得到的照片的路径。但是这路径如果作为参数传入

相册多选方法void plus.gallery.pick( successCB, errorCB, option );

当option ={ multiple:true, selected=[拍照的路径]}

相册多选图片模式下并没有勾中刚才拍的照片,因为照片不在相册图片集中。

重现步骤
[步骤]
1.拍照一张图片
2.把拍照结果路径保存起来
3. 把拍照路径在多选相册模式下作为参数传入
[结果]
拍照的路径并没有被勾选中。
[期望]
拍照的路径应该有选中效果

即便调用了plus.gallery.save方法把拍照结果存到相册下,也无效。
并且plus.gallery.save方法的成功分支回调,没有提供保存的路径,否则这个问题也能避免。

安卓多选模式下也有此问题。
运行环境
ios手机
[系统版本]
9.3
[浏览器版本]
[IDE版本]
[mui版本]

附件
[代码片段]

[安装包]

联系方式
[QQ]378983249
[电话]15178729567

2017-07-14 12:14 负责人:无 分享
已邀请:
3***@qq.com

3***@qq.com (作者)

<!DOCTYPE html>  
<html>  
  
	<head>  
		<meta charset="UTF-8">  
		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">  
		<meta name="apple-mobile-web-app-capable" content="yes">  
		<meta name="apple-mobile-web-app-status-bar-style" content="black">  
		<title></title>  
		<script src="../js/mui.min.js"></script>  
	</head>  
  
	<body>  
		<input type="button" value="先点击拍照得到一张图片#" id="btnCamera" />  
		<br/> <br/> <br/>  
		<input type="button" value="再本地多选几张图片#" id="btnGallery" />  
  
	</body>  
	<script>  
		window.onload = function() {  
			mui.plusReady(function() {  
				UIEventBind();  
			});  
		}  
  
		//全局记录所有的图片路径数组  
		var globalPathList = [];  
  
		//绑定控件行为  
		function UIEventBind() {  
			document.getElementById("btnCamera").onclick = openCamera;  
			document.getElementById("btnGallery").onclick = openGallery;  
		}  
  
		//打印当前所有的图片路径  
		function printGlobalPathList() {  
			console.log("当前所有地址信息如下======");  
			for(var i in globalPathList) {  
				console.log(globalPathList[i]);  
			}  
			console.log("当前所有地址信息输出完毕");  
		}  
  
		//拍照得到一张图  
		//camera的文档路径,方便你查看 http://www.html5plus.org/doc/zh_cn/camera.html  
		function openCamera() {  
			console.log("openCamera now!");  
			plus.camera.getCamera().captureImage(  
				function(p) {  
					console.log("转换前=>" + p); //转换前=>_doc/1499932421807.jpg  
					p = plus.io.convertLocalFileSystemURL(p); //路径转换为本地绝对路径  
					if(p.indexOf('file:///') == 0) {  
						//do nothing;  
					} else {  
						p = "file:///" + p;  
					}  
					console.log("转换后=>" + p);  
					//转换后=>file:////storage/emulated/0/Android/data/io.dcloud.HBuilder/.HBuilder/apps/HBuilder/doc/1499932421807.jpg  
  
					plus.gallery.save(p, function() {  
						alert("succeed!");  
						globalPathList.push(p);  
						printGlobalPathList();  
					}, function() {  
						alert("err!");  
					});  
  
					////考虑在这里把p先存入到相册,再得到相册保存的路径,但是无法得到保存路径回调  
					//plus.gallery.save没有路径回调  
				},  
				function(e) {  
					console.log("取消选择图片");  
				}  
			);  
		}  
  
		//相册选择多张图  
		//gallery,方便你查看 http://www.html5plus.org/doc/zh_cn/gallery.html  
		function openGallery() {  
			console.log("openGallery now!");  
  
			var isSystem = true; //ios测试这里改为true,调用系统相册才是测试目的  
			if(mui.os.android) {  
				isSystem = false; //安卓本身不支持多选,所以用dlcoud提供的多选,故system:false  
			}  
  
			plus.gallery.pick(  
				function(event) {  
					console.log("选择的图片为:" + JSON.stringify(event.files));  
					for(var s in event.files) {  
						var path = event.files[s];  
						if(globalPathList.indexOf(path) < 0) { //避免添加重复路径  
							globalPathList.push(path);  
						}  
					}  
					printGlobalPathList();  
				},  
				function(e) {  
					console.log("取消选择图片");  
				}, {  
					filter: "image",  
					multiple: true,  
					system: isSystem,  
					selected: globalPathList,  
					maximum: 9  
				}  
			);  
		}  
	</script>  
  
</html>

该问题目前已经被锁定, 无法添加新回复