欢迎光临,了解微信小程序开发,就上易用通!

图片等比例缩放 动态的获取图片的高度和宽度 动态的设置图片的高度和宽度

发布:2018-01-25 09:12浏览: 来源:网络 作者:tianshu

在小程序布局中,如果图片不是固定高度和高度,但image设置的是固定的高度和宽度,这时候原始图片相对image设置的固定高度和宽度不是等比例大小,那么这张图片就会变形,变的不清晰。 
这时就可以使用下面的等比例缩放的方式缩放图片,让图片不变形。或者通过image的bindload方法动态的获取图片的高度和宽度,动态的设置图片的高度和宽度,是图片布局的高度和宽度和原始图片的高度和宽度相等。

1.图片等比例缩放工具

 

  1. //Util.js
  2.  
  3. class Util{
  4.  
  5. /***
  6. * 按照显示图片的宽等比例缩放得到显示图片的高
  7. * @params originalWidth 原始图片的宽
  8. * @params originalHeight 原始图片的高
  9. * @params imageWidth 显示图片的宽,如果不传就使用屏幕的宽
  10. * 返回图片的宽高对象
  11. ***/
  12. static imageZoomHeightUtil(originalWidth,originalHeight,imageWidth){
  13. let imageSize = {};
  14. if(imageWidth){
  15. imageSize.imageWidth = imageWidth;
  16. imageSize.imageHeight = (imageWidth * originalHeight) / originalWidth;
  17. }else{//如果没有传imageWidth,使用屏幕的宽
  18. wx.getSystemInfo({
  19. success: function (res) {
  20. imageWidth = res.windowWidth;
  21. imageSize.imageWidth = imageWidth;
  22. imageSize.imageHeight = (imageWidth * originalHeight) / originalWidth;
  23. }
  24. });
  25. }
  26. return imageSize;
  27. }
  28.  
  29. /***
  30. * 按照显示图片的高等比例缩放得到显示图片的宽
  31. * @params originalWidth 原始图片的宽
  32. * @params originalHeight 原始图片的高
  33. * @params imageHeight 显示图片的高,如果不传就使用屏幕的高
  34. * 返回图片的宽高对象
  35. ***/
  36. static imageZoomWidthUtil(originalWidth,originalHeight,imageHeight){
  37. let imageSize = {};
  38. if(imageHeight){
  39. imageSize.imageWidth = (imageHeight *originalWidth) / originalHeight;
  40. imageSize.imageHeight = imageHeight;
  41. }else{//如果没有传imageHeight,使用屏幕的高
  42. wx.getSystemInfo({
  43. success: function (res) {
  44. imageHeight = res.windowHeight;
  45. imageSize.imageWidth = (imageHeight *originalWidth) / originalHeight;
  46. imageSize.imageHeight = imageHeight;
  47. }
  48. });
  49. }
  50. return imageSize;
  51. }
  52.  
  53. }
  54.  
  55. export default Util;

2.使用image组件加载图片,通过bindload动态的获取图片的高度和宽度,动态的设置图片的高度和宽度  index.wxml (../pro.png是本地图片)

 

  1. <image bindload="imageLoad" style="width:{{imageWidth}}px;;height:{{imageHeight}}px;" src="../pro.png"/>

index.js

 

  1. import Util from '../common/Util';
  2.  
  3. Page({
  4. data:{
  5. imageWidth:0,
  6. imageHeight:0
  7. },
  8. imageLoad: function (e) {
  9. //获取图片的原始宽度和高度
  10. let originalWidth = e.detail.width;
  11. let originalHeight = e.detail.height;
  12. //let imageSize = Util.imageZoomHeightUtil(originalWidth,originalHeight);
  13.  
  14. //let imageSize = Util.imageZoomHeightUtil(originalWidth,originalHeight,375);
  15. let imageSize = Util.imageZoomWidthUtil(originalWidth,originalHeight,145);
  16.  
  17. this.setData({imageWidth:imageSize.imageWidth,imageHeight:imageSize.imageHeight});
  18. }
  19. })




免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。