欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于圖片按比例自適應(yīng)縮放的js代碼

 更新時間:2021年08月13日 10:06:48   投稿:mdxy-dxy  
用戶上傳照片,照片的尺寸未知;需要生成一個預(yù)覽,這個預(yù)覽圖要根據(jù)提供給用戶預(yù)覽的區(qū)域自應(yīng)用,并且居中;如果圖片太大,需要按比例縮放

如下圖。

圖片自適應(yīng)縮放

瞄了一下,居中可以用 text-align:center; 來實現(xiàn)。而按比例縮放,利用預(yù)設(shè) <img /> 的 width 、height 屬性解決不了。因為用戶圖片可能是很長的,也可能是很寬的。在線上想了一下他們的關(guān)系,按條件來判斷是這樣的:

if(實際寬度 > 預(yù)覽最大寬度) {
縮放寬度 = 預(yù)覽最大寬度
}

if(實際高度 > 預(yù)覽最大高度) {
縮放高度 = 預(yù)覽最大高度
}

但是這樣會有問題,比如當寬度和高度都被縮放,如果縮放比較不同,圖片就不是按比例縮放,會變得非常丑。為了讓它按比例縮放,就需要做各種判斷了。那這樣就違背了我們希望程序自動化的原則了。再想想,雖然不喜歡數(shù)學,但數(shù)學還是很好用的,應(yīng)該有其他辦法。而既然是按比例縮放,何不用實際圖像和預(yù)覽區(qū)域?qū)挾茸鞯谋壤齺碛嬎闼麄冴P(guān)系?hmmmm… 果然 OK。實際上我們永遠都只需要縮放寬度或高度中的其中一個。因為比例只有大和小種情況。具體的,寫一個函數(shù)來實現(xiàn)它吧:

/** 
* 圖片按比例自適應(yīng)縮放 
* @param img {Element} 用戶上傳的圖片 
* @param maxWidth {Number} 預(yù)覽區(qū)域的最大寬度 
* @param maxHeight {Number} 預(yù)覽區(qū)域的最大高度 
*/ 

var resizeImg = function(img, maxWidth, maxHeight){ 
var w = img.width, 
h = img.height; 

// 當圖片比預(yù)覽區(qū)域小時不做任何改變 
if(w < maxWidth && h < maxHeight) return; 
// 當實際圖片比例大于預(yù)覽區(qū)域?qū)捀弑壤龝r 
// 縮放圖片寬度,反之縮放圖片寬度 
w/h > maxWidth/maxHeight ? img.width = maxWidth : img.height = maxHeight; 
}; 

完整的測試代碼:

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>圖片按比例自適應(yīng)縮放</title> 
<style> 
.cnt{text-align:center;width:600px;height:350px;margin:0 auto;border:1px solid #ddd;} 
</style> 
</head> 
<body> 
<div class="cnt"> 
<img id="img" src="http://www.wallcoo.com/1920x1440/1920x1440_nature_wallpapers_02/wallpapers/1920x1440/%5Bwallcoo.com%5D_1920X1440_nature_wallpapers_aVistas005.jpg" alt="alipay" /> 
<br /> 
<a  rel="nofollow">查看原圖</a> || <a  title="關(guān)于圖片按比例自適應(yīng)縮放">返回文章:關(guān)于圖片按比例自適應(yīng)縮放 &raquo;</a> 
</div> 
<script> 
window.onload = function() { 
var img = document.getElementById('img'), 
/** 
* 圖片按比例自適應(yīng)縮放 
* @param img {Element} 用戶上傳的圖片 
* @param maxWidth {Number} 預(yù)覽區(qū)域的最大寬度 
* @param maxHeight {Number} 預(yù)覽區(qū)域的最大高度 
*/ 
resizeImg = function(img, maxWidth, maxHeight){ 
var w = img.width, 
h = img.height; 
// 當圖片比預(yù)覽區(qū)域小時不做任何改變 
if(w < maxWidth && h < maxHeight) return; 
// 當實際圖片比例大于預(yù)覽區(qū)域?qū)捀弑壤龝r 
// 縮放圖片寬度,反之縮放圖片寬度 
w/h > maxWidth/maxHeight ? img.width = maxWidth : img.height = maxHeight; 
}; 
resizeImg(img, 500, 300); 
} 
</script> 
</body> 
</html> 

JS控制圖片顯示的大?。▓D片等比例縮放)

在網(wǎng)頁中放圖片的時候我們經(jīng)常會遇到圖片變形的問題,今天給大家分享一個等比例壓縮圖片的js,可以設(shè)置最大寬高,然后等比例自動壓縮。

核心代碼

<script type="text/javascript">
function AutoResizeImage(maxWidth,maxHeight,objImg){
    var img = new Image();
    img.src = objImg.src;
    var hRatio;
    var wRatio;
    var Ratio = 1;
    var w = img.width;
    var h = img.height;
    wRatio = maxWidth / w;
    hRatio = maxHeight / h;
    if (maxWidth ==0 && maxHeight==0){
        Ratio = 1;
    }else if (maxWidth==0){
        if (hRatio<1) Ratio = hRatio;
    }else if (maxHeight==0){
        if (wRatio<1) Ratio = wRatio;
    }else if (wRatio<1 || hRatio<1){
        Ratio = (wRatio<=hRatio?wRatio:hRatio);
    }
    if (Ratio<1){
        w = w * Ratio;
        h = h * Ratio;
    }
    objImg.height = h;
    objImg.width = w;
}
</script>

在對應(yīng)的img上增加onload=”AutoResizeImage(width,height,this)這句即可。

例如:

<img src="#" onload="AutoResizeImage(200,150,this)" alt="200 X 150"/>

jquery的后期更方便處理,而且頁面中不需要加onload

一般css中加入最大寬帶,高度 auto 然后再加上js

$('#content').find('img').each(function(){
        var img = this;
        if (img.width >= 800 && !$(this).hasClass("nohref")){
            img.style.width = "800px";
            img.style.height = "auto";
          }
    });

這樣基本上就沒有問題了

相關(guān)文章

最新評論