也是同事问我,说你这拍照上传有一个问题,相册里没有这些图片,想找到太难了,想了想算了,那就再保存到相册一份吧。是否压缩图片我增加了“是否上传原图” 按钮,也是考虑网络问题。将代码贴出来共享,^_^^_^
//获取照片方式 拍照或者文件选择
/**
*
* @param {Object} title actionSheet头部
* @param {Object} callback 回调函数
* @param {Object} fileName 图片名
*/
function getImgMethod(title, callback, fileName) {
if(mui.os.plus) {
var a = [{
title: "拍照"
}, {
title: "从相册选择"
}];
plus.nativeUI.actionSheet({
title: title,
cancel: "取消",
buttons: a
}, function(b) { /*actionSheet 按钮点击事件*/
switch(b.index) {
case 0:
break;
case 1:
getImage(callback, fileName); /*拍照*/
break;
case 2:
galleryImg(callback, fileName); /*打开相册*/
break;
default:
break;
}
})
}
}
//拍照
/**
*
* @param {Object} callback 回调函数
* @param {Object} fileName 图片名称
*/
function getImage(callback, fileName) {
var c = plus.camera.getCamera();
var tpgs = c.supportedImageFormats; //摄像头支持的图片格式
c.captureImage(function(e) {
//先将原图保存到相册
plus.gallery.save(e, function() {
plus.io.resolveLocalFileSystemURL(e, function(entry) {
var s = entry.toLocalURL(); //+ "?version=" + new Date().getTime();
callback(s); /*上传图片*/
}, function(e) {
console.log("读取拍照文件错误:" + e.message);
});
})
}, function(s) {
console.log("error" + s);
}, {
filename: "_doc/" + fileName
})
}
//本地相册选择
/**
*
* @param {Object} callback 回调函数
* @param {Object} fileName 图片名称
*/
function galleryImg(callback, fileName) {
plus.gallery.pick(function(a) {
plus.io.resolveLocalFileSystemURL(a, function(entry) {
plus.io.resolveLocalFileSystemURL("_doc/", function(root) {
root.getFile(fileName, {}, function(file) {
//文件已存在
file.remove(function() {
entry.copyTo(root, fileName, function(e) {
var e = e.toLocalURL() //+ "?version=" + new Date().getTime();
callback(e); /*上传图片*/
//变更大图预览的src
//目前仅有一张图片,暂时如此处理,后续需要通过标准组件实现
},
function(e) {
console.log('copy image fail:' + e.message);
});
}, function() {
console.log("delete image fail:" + e.message);
});
}, function() {
//文件不存在
entry.copyTo(root, fileName + '.png', function(e) {
var path = e.toLocalURL() + "?version=" + new Date().getTime();
callback(path); /*上传图片*/
},
function(e) {
console.log('copy image fail:' + e.message);
});
});
}, function(e) {
console.log("get _www folder fail");
})
}, function(e) {
console.log("读取拍照文件错误:" + e.message);
});
}, function(a) {}, {
filter: "image"
})
}
调用时:
压缩图片的参数含义请参考http://www.html5plus.org/doc/zh_cn/zip.html#plus.zip.compressImage
getImgMethod("选择图片", function(data) {
//是否上传原图
if(_this.isQulity) {
data = data + "?version=" + new Date().getTime();
var fileName = data.substring(data.lastIndexOf("/") + 1, data.lastIndexOf(
"?"));
app.$data.imgs.push({
name: fileName,
url: data,
isSave: 0
})
} else {
//压缩图片
plus.zip.compressImage({
src: data,
dst: "_doc/chat/camera/" + data,
quality: 20,
width: '50%',
height: '50%',
overwrite: true
}, function(e) {
data = data + "?version=" + new Date().getTime();
var fileName = data.substring(data.lastIndexOf("/") + 1, data.lastIndexOf(
"?"));
app.$data.imgs.push({
name: e.target,
url: e.target,
isSave: 0
})
})
}
}, 'hst' + new Date().getTime());