首頁 >web前端 >js教程 >JS網頁圖片按比例自適應縮放實作方法_javascript技巧

JS網頁圖片按比例自適應縮放實作方法_javascript技巧

WBOY
WBOY原創
2016-05-16 17:03:431431瀏覽

使用者上傳照片,照片的尺寸未知;需要產生一個預覽,這個預覽圖要根據提供給使用者預覽的區域自應用,並且居中;如果圖片太大,需要按比例縮放。如下圖。

JS網頁圖片按比例自適應縮放實作方法_javascript技巧

瞄準了一下,居中可以用 text-align:center; 來實現。而按比例縮放,利用預設 JS網頁圖片按比例自適應縮放實作方法_javascript技巧 的 width 、height 屬性解決不了。因為使用者圖片可能是很長的,也可能是很寬的。在線上想了一下他們的關係,按條件來判斷是這樣的:

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

if(實際高度> 預覽最大高度) {
    縮放高度= 預覽最大高度
}
但是這樣會有問題,例如當寬度和高度都被縮放,如果縮放比較不同,圖片就不是按比例縮放,會變得非常醜。為了讓它按比例縮放,就需要做各種判斷了。那這樣就違背了我們希望程式自動化的原則了。再想想,雖然不喜歡數學,但數學還是很好用的,應該有其他方法。而既然是按比例縮放,何不用實際影像和預覽區域寬度作的比例來計算他們關係? hmmmm… 果然 OK。實際上我們永遠都只需要縮放寬度或高度中的其中一個。因為比例只有大和小種情況。具體的,寫一個函數來實現它:

複製程式碼 程式碼如下:


程式碼如下:


**
 * 圖片按比例自適應縮放 * @param img {Element} 用戶上傳的圖片

 * @param maxWidth {Number} 預覽區域的最大寬度
 * @param maxHeight {Number} 預覽區域的最大寬度
 * @param maxHeight {Number} 預覽區域的最大寬度

 * @param maxHeight {Number} 預覽區域的最大寬度

 * @param maxHeight {Number} 預覽區域的最大寬度
 * @param maxHeight {Number} 預覽區域的最大寬度

 * @param maxHeight {Number} 預覽區域的最大寬度

 * @param maxHeight {Number} 預覽區域的最大高度
 */

var resizeImg = function(img, maxWidth, maxHeight){

        var w = img.width,            // 當圖片比預覽區域小時不做任何改變        if(w         // 當實際圖片比例大於預覽區域寬高比例時        // 縮放圖片寬度,反之縮放圖片寬度   >Hep. maxHeight;
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn