中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

用Canvas壓縮圖片的方法

發布時間:2020-09-23 14:14:54 來源:億速云 閱讀:149 作者:小新 欄目:web開發

這篇文章主要介紹用Canvas壓縮圖片的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

一、本地圖片輸入

1. 獲取本地文件

<!--HTML-->
<input type="file" id="choose-img" />
// JS
var chooseImg = document.getElementById("choose-img");
chooseImg.onchange = function(e){
    var file = this.files[0];
    // ……  (省略部分代碼后續依次展示,下同)
};

很簡單,就是通過type類型為file的按鈕來獲取本地文件。

2. 判斷所獲取的本地文件類型

<!--HTML-->
<div id="result"></div>
// JS
var result = document.getElementById("result");    // 用于顯示圖片輸出結果,或者錯誤提示
if(/image/.test(file.type)){     // 判斷文件類型是否為圖片
    // ……
}
else{
    result.innerHTML = '<span style="color: red;">文件類型有誤!</span>';
}

3. 將所獲取的本地圖片以base64格式輸出

var img = new Image(),      // 創建圖片對象,用于放置原始圖片
    reader = new FileReader();
reader.readAsDataURL(file);    // 以base64格式讀取并存入FileReader對象的result屬性中
reader.onload = function(){
    img.src = this.result;   // 將圖片base64字符串直接賦予Image對象的src中
    document.body.insertBefore(img,chooseImg);   // 將輸出的圖片插入到文件按鈕之前
    img.onload = function(){
        // ……
    };
};

二、在Canvas畫布中繪制圖片

1. 創建畫布

var canvas = document.createElement('canvas');
canvas.width = img.clientWidth;
canvas.height = img.clientHeight;
var context = canvas.getContext('2d');

注意:畫布大小與所輸入圖片寬高相同。

2. 繪制圖片

context.drawImage(img,0,0,canvas.width,canvas.height);

三、壓縮圖片并輸出

<!--HTML-->
圖片壓縮比率 : <input id="rate" type="number" min="0" max="100" /> %
// JS
var chooseImg = document.getElementById("choose-img"),
    result = document.getElementById("result");
chooseImg.onchange = function(e){
    var file = this.files[0];
    if(/image/.test(file.type)){
        var img = new Image(),
            reader = new FileReader();
        reader.readAsDataURL(file);
        reader.onload = function(){
            img.src = this.result;
            document.body.insertBefore(img,chooseImg);
            img.onload = function(){
                var canvas = document.createElement('canvas');
                canvas.width = img.clientWidth;
                canvas.height = img.clientHeight;
                var context = canvas.getContext('2d');
                context.drawImage(img,0,0,canvas.width,canvas.height);
                var rate = document.getElementById("rate").value || 100;
                var imgUrl = canvas.toDataURL(file.type,rate/100);
                result.innerHTML = '壓縮后:<img src="'+ imgUrl +'" />';
                result.style.display = 'block';
                img.style.display = 'none';
            };
        };
    }
    else{
        result.innerHTML = '<span style="color: red;">文件類型有誤!</span>';
    }
};

經測試發現,通過Canvas壓縮JPEG格式圖片效果最佳,PNG壓縮效果不明顯,有時反而變得更大。

以上是用Canvas壓縮圖片的方法的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

墨脱县| 朝阳市| 来宾市| 临朐县| 柯坪县| 马尔康县| 蓝田县| 崇州市| 成都市| 分宜县| 南京市| 宁强县| 梁山县| 嘉峪关市| 郁南县| 山阳县| 武清区| 东丰县| 沈丘县| 珠海市| 邛崃市| 龙门县| 兴业县| 卢氏县| 海丰县| 鄄城县| 东山县| 吉林市| 玉田县| 昂仁县| 揭东县| 三门县| 卓资县| 定边县| 荥阳市| 哈密市| 贵溪市| 凯里市| 安泽县| 林芝县| 鹿泉市|