部分android手机上 image标签无法显示网络图片
发布于 5 年前 作者 gang41 4349 次浏览 来自 问答

部分android手机的image标签显示不了网络图片,有没有什么办法显示出来?

5 回复

你好,请提供一下出现问题的机型和微信版本,以及能复现问题的简单代码示例。

给个网络图片的地址

同问,同样的机型上,图片在不同一台手机也会有的显示,有的不显示。

<image src=‘https://upload.carisok.com/uploads/systerm/20180130/201801301203024194.png@188w_188h.png’>

魅族6,不需要复杂的代码,直接<image src=‘网络地址’> 就显示不出来。

现在的做法是先下载到本地再显示。

一部分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;

你可以参考下

回到顶部