部分android手机上 image标签无法显示网络图片
部分android手机的image标签显示不了网络图片,有没有什么办法显示出来?
5 回复
同问,同样的机型上,图片在不同一台手机也会有的显示,有的不显示。
<image src=‘https://upload.carisok.com/uploads/systerm/20180130/201801301203024194.png@188w_188h.png’>
一部分android机型在本地选择图片之后,以base64的形式显示在<img>标签里会有无法显示的问题。
主要原因在于照片的base64头部缺少元信息。我一般是这么处理的:
if(obj.fileInput){
var value = obj.fileInput.value;
/**
* fileInput.value的格式有如下两种:
* 1. C:\fakepath\image.png (iOS)
* 2. C:\fakepath\image%A5558 (部分Android)
* 第 1 种的能否正常发送。
* 第 2 种由于其base64格式没有type类型,因此无法发送。需要手动在其base64中添加"data:image/jpeg:base64,"
*/
var ext = value.substring(value.lastIndexOf('.') + 1, value.length);
var type = /png|jpg|bmp|jpeg|gif/i.test(ext) ? 'suffix' : 'nosuffix';
if (type == 'nosuffix') {
var reader = new FileReader();
reader.readAsDataURL(fileInput.files[0]);
reader.onload = function (e) {
var ret = e.target.result;
var imgDataArr = ret.split(',');
if (imgDataArr[0].indexOf('data:image') == -1) {
if(imgDataArr.length > 1){
obj.dataURL = 'data:image/jpeg;base64,' + imgDataArr[1];
}else{
obj.dataURL = 'data:image/jpeg;base64,' + imgDataArr[0];
}
}
sendImgMsg(obj);
}
} else {
sendImgMsg(obj);
}
return;
你可以参考下