【轉】微信小程序開發之圖片等比例縮放 獲取屏幕尺寸圖片尺寸 自適應


原文【https://blog.csdn.net/qq_31383345/article/details/53127804】

早上在論壇上看到有人寫了關於圖片等比例縮放的文章,只是判斷了圖片寬是否大於屏幕寬.我之前在做Android的時候也會遇到圖片等比例縮放的問題.應該是用圖片寬高比和屏幕寬高比做判斷.做個筆記.

老規矩,先上圖.

1.圖片高寬比小於屏幕高寬比


 

2.圖片高寬比大於屏幕高寬比


 

3.這種其實也是圖片高寬比小於屏幕高寬比,但是高寬都大於屏幕高寬.所以不能簡單用高寬來判斷,應該是用高寬比判斷后做縮放.


 

上代碼:

1.index.wxml

 

  1. <!--index.wxml-->  
  2. <!--圖片寬大於屏幕寬-->  
  3. <image style="width: {{imagewidth}}px; height: {{imageheight}}px;"  src="{{imagefirstsrc}}" bindload="imageLoad"></image>  
  4. <!--圖片高大於屏幕高-->  
  5. <!--<image style="width: {{imagewidth}}px; height: {{imageheight}}px;"  src="{{imagesecondsrc}}" bindload="imageLoad"></image>-->  
  6. <!--圖片寬高大於屏幕寬高-->  
  7. <!--<image style="width: {{imagewidth}}px; height: {{imageheight}}px;"  src="{{imagethirdsrc}}" bindload="imageLoad"></image>-->  
<!--index.wxml-->
<!--圖片寬大於屏幕寬-->
<image style="width: {{imagewidth}}px; height: {{imageheight}}px;"  src="{{imagefirstsrc}}" bindload="imageLoad"></image>
<!--圖片高大於屏幕高-->
<!--<image style="width: {{imagewidth}}px; height: {{imageheight}}px;"  src="{{imagesecondsrc}}" bindload="imageLoad"></image>-->
<!--圖片寬高大於屏幕寬高-->
<!--<image style="width: {{imagewidth}}px; height: {{imageheight}}px;"  src="{{imagethirdsrc}}" bindload="imageLoad"></image>-->

2.index.js

 

[javascript] view plain copy
print ?
  1. //index.js  
  2. //獲取應用實例  
  3. var imageUtil = require('../../utils/util.js');  
  4. var app = getApp()  
  5. Page({  
  6.   data: {  
  7.     imagefirstsrc: 'http://bpic.588ku.com/back_pic/00/03/85/1656205138bbe2d.png',//圖片鏈接  
  8.     imagesecondsrc: 'http://bpic.588ku.com/back_pic/04/07/63/28581203949ca9d.jpg!/fw/400/quality/90/unsharp/true/compress/true',//圖片鏈接  
  9.     imagethirdsrc:'http://img1.gtimg.com/ent/pics/hv1/13/71/2061/134034643.jpg',  
  10.     imagewidth: 0,//縮放后的寬  
  11.     imageheight: 0,//縮放后的高  
  12.   
  13.   },  
  14.   onLoad: function () {  
  15.   },  
  16.   imageLoad: function (e) {  
  17.     var imageSize = imageUtil.imageUtil(e)  
  18.     this.setData({  
  19.       imagewidth: imageSize.imageWidth,  
  20.       imageheight: imageSize.imageHeight  
  21.     })  
  22.   }  
  23. })  
//index.js
//獲取應用實例
var imageUtil = require('../../utils/util.js');
var app = getApp()
Page({
  data: {
    imagefirstsrc: 'http://bpic.588ku.com/back_pic/00/03/85/1656205138bbe2d.png',//圖片鏈接
    imagesecondsrc: 'http://bpic.588ku.com/back_pic/04/07/63/28581203949ca9d.jpg!/fw/400/quality/90/unsharp/true/compress/true',//圖片鏈接
    imagethirdsrc:'http://img1.gtimg.com/ent/pics/hv1/13/71/2061/134034643.jpg',
    imagewidth: 0,//縮放后的寬
    imageheight: 0,//縮放后的高

  },
  onLoad: function () {
  },
  imageLoad: function (e) {
    var imageSize = imageUtil.imageUtil(e)
    this.setData({
      imagewidth: imageSize.imageWidth,
      imageheight: imageSize.imageHeight
    })
  }
})


3.util.js

 

[javascript] view plain copy
print ?
  1. //util.js  
  2. function imageUtil(e) {  
  3.   var imageSize = {};  
  4.   var originalWidth = e.detail.width;//圖片原始寬  
  5.   var originalHeight = e.detail.height;//圖片原始高  
  6.   var originalScale = originalHeight/originalWidth;//圖片高寬比  
  7.   console.log('originalWidth: ' + originalWidth)  
  8.   console.log('originalHeight: ' + originalHeight)  
  9.   //獲取屏幕寬高  
  10.   wx.getSystemInfo({  
  11.     success: function (res) {  
  12.       var windowWidth = res.windowWidth;  
  13.       var windowHeight = res.windowHeight;  
  14.       var windowscale = windowHeight/windowWidth;//屏幕高寬比  
  15.       console.log('windowWidth: ' + windowWidth)  
  16.       console.log('windowHeight: ' + windowHeight)  
  17.       if(originalScale < windowscale){//圖片高寬比小於屏幕高寬比  
  18.         //圖片縮放后的寬為屏幕寬  
  19.          imageSize.imageWidth = windowWidth;  
  20.          imageSize.imageHeight = (windowWidth * originalHeight) / originalWidth;  
  21.       }else{//圖片高寬比大於屏幕高寬比  
  22.         //圖片縮放后的高為屏幕高  
  23.          imageSize.imageHeight = windowHeight;  
  24.          imageSize.imageWidth = (windowHeight * originalWidth) / originalHeight;  
  25.       }  
  26.        
  27.     }  
  28.   })  
  29.   console.log('縮放后的寬: ' + imageSize.imageWidth)  
  30.   console.log('縮放后的高: ' + imageSize.imageHeight)  
  31.   return imageSize;  
  32. }  
  33.   
  34. module.exports = {  
  35.   imageUtil: imageUtil  
  36. }  
//util.js
function imageUtil(e) {
  var imageSize = {};
  var originalWidth = e.detail.width;//圖片原始寬
  var originalHeight = e.detail.height;//圖片原始高
  var originalScale = originalHeight/originalWidth;//圖片高寬比
  console.log('originalWidth: ' + originalWidth)
  console.log('originalHeight: ' + originalHeight)
  //獲取屏幕寬高
  wx.getSystemInfo({
    success: function (res) {
      var windowWidth = res.windowWidth;
      var windowHeight = res.windowHeight;
      var windowscale = windowHeight/windowWidth;//屏幕高寬比
      console.log('windowWidth: ' + windowWidth)
      console.log('windowHeight: ' + windowHeight)
      if(originalScale < windowscale){//圖片高寬比小於屏幕高寬比
        //圖片縮放后的寬為屏幕寬
         imageSize.imageWidth = windowWidth;
         imageSize.imageHeight = (windowWidth * originalHeight) / originalWidth;
      }else{//圖片高寬比大於屏幕高寬比
        //圖片縮放后的高為屏幕高
         imageSize.imageHeight = windowHeight;
         imageSize.imageWidth = (windowHeight * originalWidth) / originalHeight;
      }
     
    }
  })
  console.log('縮放后的寬: ' + imageSize.imageWidth)
  console.log('縮放后的高: ' + imageSize.imageHeight)
  return imageSize;
}

module.exports = {
  imageUtil: imageUtil
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM