通过input file调用手机摄像头拍照(在PC端是选择图片),获取到的图片铜鼓FileReader预览,然后将获取到的base64传到后台接口加水印,接口依然返回加了水印的base64的格式。
代码是这样的:
//点击拍照并预览
$(".mui-input-row input").change(function(e){
var _this = this;
var files = e.target.files;
var reader = new FileReader();
reader.onload = function(){
var url = this.result;
var urlSplit = url.split(",")[1];
//添加水印
addWaterMark(urlSplit,_this);
//$(_this).siblings("img").attr("src",url);
};
reader.readAsDataURL(files[0]);
});
//添加水印
function addWaterMark(urlSplit,element){
var inputBase64 = urlSplit;
var dataJson={
"text" : "重庆联通",
"inputBase64" : inputBase64
};
console.log("==============添加水印请求参数 :"+JSON.stringify(dataJson));
$.ajax({
type: "post",
url: apc_rest_host + "rest/processModelServiceRest/addTextToImage4Base64",
contentType: "application/x-www-form-urlencoded; charset=utf-8",
async: false,
data:dataJson,
dataType: "json",
crossDomain: true == !(document.all),
beforeSend: function() {
mui.loading.show("添加水印");
},
success: function(data){
console.log("添加水印返回参数:"+JSON.stringify(data));
if (data.respCode=="0000") {
var imgUrl = "data:image/png;base64,"+data.content;
//addWaterMarkArr.push(imgUrl);
//$("ul").eq(i).find("img").attr("src",imgUrl);
$(element).siblings("img").attr("src",imgUrl);
} else {
mui.toast(data.content);
}
},
error: function(data) {
mui.toast("添加水印Ajax请求失败");
},
complete:function(){
mui.loading.hide();
}
});
}
问题是:通过手机自带照相机拍照,调用加水印接口会报错,后台日志取不到inputBase64这个参数,但是用自他相机,比如b612相机没有问题,在pc端选择图片上传也没有问题。请问这个如何解决??谢谢~
PS:我试过不在reader.onload里面取base64的数据去调水印接口,等图片都处于预览的状态,点击确定的时候再去取,调预览接口依然取不到这个数据。