微信小程序图片显示不全

最近小程序蛮火。

    直入主题: 对于一张网络图片高度太高,而显示不全如何解决?

    其实我一贯的观点是,所有的问题从api中都能够找到答案,只是有时候缺少耐
心,而没有好好去读官方api,出现问题后着急的google、百度、github... 下面我们来看下api 怎么说的:

 

image

 

图片。

属性名类型默认值说明
srcString 图片资源地址
modeString'scaleToFill'图片裁剪、缩放的模式
binderrorHandleEvent 当错误发生时,发布到 AppService 的事件名,事件对象event.detail = {errMsg: 'something wrong'}
bindloadHandleEvent 当图片载入完毕时,发布到 AppService 的事件名,事件对象event.detail = {height:'图片高度px', width:'图片宽度px'}

注:image组件默认宽度300px、高度225px

mode有12种模式,其中3种是缩放模式,9种是裁剪模式。

 

特别注意:“注”的位置 说了,如果image标签不写宽高属性,则默认显示宽度300px、高度225px。所以如下方法就可以在图片下载成功后拿到图片的宽高属性值了,如下:

WXML:

[html] view plain copy  print?在CODE上查看代码片派生到我的代码片

  1. <image style="width: {{imageWidth}}px; height: {{imageHeight}}px;" src="{{imgurl}}"  mode="aspectFill" bindload="<span style="color:#FF0000;"><strong>imgload</strong></span>"></image>  

JS:

 

[javascript] view plain copy  print?在CODE上查看代码片派生到我的代码片

  1. Page({  
  2.   data:{  
  3.     imgurl:'http://hukang02.b0.upaiyun.com/1480321452672.jpg',  
  4.     imageWidth:0,  
  5.     imageHeight:0   
  6.  },  
  7.   <span style="color:#CC0000;"><strong>imgload</strong></span>: function(e){  
  8.     console.log("图片加载完成="+e.detail);  
  9.     //用来计算高宽  
  10.     this.setData(wxAutoImageCal(e));  
  11.  }  
  12. })  

上面方法就可以得到图片的高宽

 

打印的数据是:{width:720,height:1546}

接下来是如何显示的问题:

    如果图片宽度大于屏幕宽度,则显示屏幕宽度大小,此时图片高度需要等比例压缩;

    如果图片宽度小于等于屏幕宽度,则正常显示图片宽高。

以下方法是根据屏幕宽度比较宽度大小,从而计算显示的高宽:

 

[javascript] view plain copy  print?在CODE上查看代码片派生到我的代码片

  1. function wxAutoImageCal(e){  
  2.     //获取图片的原始长宽  
  3.     var originalWidth = e.detail.width;  
  4.     var originalHeight = e.detail.height;  
  5.     var windowWidth = 0,windowHeight = 0;  
  6.     var imageWidth= 0,imageHeight= 0;  
  7.     var results= {};  
  8.    //获取屏幕信息  
  9.   wx.getSystemInfo({  
  10.       success: function(res) {  
  11.         windowWidth = res.windowWidth;  
  12.         windowHeight = res.windowHeight;  
  13.         //判断按照那种方式进行缩放  
  14.         if(originalWidth > windowWidth){//在图片width大于手机屏幕width时候  
  15.           imageWidth= windowWidth;  
  16.           imageHeight= (imageWidth*originalHeight)/originalWidth;  
  17.           results.imageWidth= imageWidth;  
  18.           results.imageHeight= imageHeight;  
  19.         }else{//否则展示原来的数据  
  20.           results.imageWidth= originalWidth;  
  21.           results.imageHeight= originalHeight;  
  22.         }  
  23.       }  
  24.     })  
  25.     return results;  
  26.   }  


如上,大功告成了,显示如下

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 } }; int main() { int diff_table[16微信小程序显示图片可能有多种原因,以下是一些常见的解决方法: 1. 检查][16] = {0}; // 差分分布表 // 计算差分分布表 for (int i图片链接是否正确:确保图片链接是正确的,可以在浏览器中打开链接来确认图片是否能够正 = 0; i < 16; i++) { for (int j = 0; j < 16; j++) { for (int x = 0; x < 16; x++) { int y1 = S[i][x]; int常显示。 2. 检查网络连接是否良好:如果网络连接不良好,可能会导致图片无法加载。 y2 = S[j][x]; int diff_in = i ^ j; int diff_out = y1 ^ y2; 3. 检查图片格式是否支持:微信小程序支持的图片格式有限,支持的格式包括 JPEG diff_table[diff_in][diff_out]++; } } } // 输出差分分布表 cout << " 、PNG、GIF、WEBP 等。如果使用的图片格式不支持,则无法正常显示。 4. 检查 |"; for (int i = 0; i < 16; i++) { cout << setw(3) << hex << i << " "; } cout << endl; for (int i = 0; i < 17; i++) { 图片大小是否超过限制:微信小程序图片大小有限制,如果图片大小超过限制,则无法 cout << "---+"; for (int j = 0; j < 16; j++) { cout << "---"; } 正常显示。可以尝试压缩图片大小或者调整图片分辨率来解决问题。 5. 清除缓 cout << endl; if (i == 16) { break; } cout << setw(2) << hex <<存:在微信小程序中,可能会存在缓存问题导致图片无法正常显示,可以尝试清除 i << " |"; for (int j = 0; j < 16; j++) { cout << setw(3) << dec << diff_table[i][j] << " "; } cout << endl; } return 0; } ``` 缓存来解决问题。 如果以上方法都无法解决问题,可以尝试联系微信小程序开发者或者微信客服来获取更多帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值