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

溫馨提示×

溫馨提示×

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

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

JS實現壓縮上傳圖片base64長度功能

發布時間:2020-05-30 02:26:38 來源:網絡 閱讀:399 作者:xiao_lili 欄目:web開發

這篇文章主要介紹了js實現壓縮上傳圖片base64長度功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

im發送圖片,現將圖片壓縮再上傳

1) 調用 FileReader 的 reader.readAsDataURL(img); 方法, 在其onload事件中, 將用戶選擇的圖片讀入 Image對象.

2) 在image對象的 onload 事件中, 通過 canvas 的 canvas.getContext('2d') 的 drawImage 方法, 將Image 改變大小繪制到canvas上.

3) 通過 canvas.toDataURL("image/jpeg", 1); 方法, 將圖片變成base64字符串, 放到send_image_value

toDataURL

canvas.toDataURL(type,?encoderOptions); 

返回值

包含 data URI 的DOMString

type

圖片格式,默認為 image/png

encoderOptions

在指定圖片格式為 image/jpeg 或 image/webp的情況下,可以從 0 到 1 的區間內選擇圖片的質量。如果超出取值范圍,將會使用默認值 0.92。其他參數會被忽略。

html

<input?id="sendImage"?title="send?a?picture"?type="file"?accept="image/*"?onchange="imgChange(this)">
<input?type="hidden"?value=""?id="send_image_value">
<img?id="showLoadingimg"?src="'+CHAT_SITE_URL+'/templates/default/images/loading.gif"?>

js

function?imgChange(e){
//檢查是否有文件被選中
if?(e.files.length?!=?0)?{
var?file?=?e.files[0],
fileType?=?file.type,
reader?=?new?FileReader();
if?(!reader)?{
e.value?=?'';
return;
};
var?size?=?file.size;
var?max_size?=?2*1024*1024;
if(size>max_size){
e.value?=?'';
$("#send_alert").html('file?is?too?large(>2M)');
return;
}
$("#showLoadingimg").show();
reader.onload?=?function(e)?{
//讀取成功,顯示到頁面并發送到服務器
e.value?=?'';
var?org_img?=?e.target.result;
var?image_base64?=?org_img;
if(size>1024*80){//>80K的
var?img?=?new?Image();
img.src?=?org_img;
img.onload=function(){
var?scale?=?1;
if(this.width?>?300?||?this.height?>?300){
if(this.width?>?this.height){
scale?=?300?/?this.width;
}else{
scale?=?300?/?this.height;
}
}
var?canvas?=?document.createElement("canvas"),?drawer?=?canvas.getContext("2d");
if(scale!=1)?{//按最大高度等比縮放
img.width?*=?scale;
img.height?*=?scale;
}
canvas.width?=?img.width;
canvas.height?=?img.width?*?(img.height?/?img.width);
drawer.drawImage(img,?0,?0,?canvas.width,?canvas.height);
var?tmp_code?=?image_base64?=?canvas.toDataURL(fileType);
if(tmp_code!='data:,'){
image_base64?=?tmp_code;
}
img_send(image_base64);
};

}else{
img_send(image_base64);
}

};
reader.readAsDataURL(file);
}
}
/**
*為將圖片賦值給消息
**/
function?img_send(image_base64){
if(image_base64!='data:,'){$("#send_image_value").val(image_base64);
send_msg();
$("#showLoadingimg").hide();
$('#sendImage').val("");
}
}  

開始時,toDataURL獲取的值是data:,

$("#send_image_value").val(image_base64);
send_msg();

這兩句寫在

reader.onload方法的最下面這就導致圖片并沒有壓縮

因為img.onload還沒執行完

發送的還是原來的圖片

在調整后就可以實現圖片的壓縮了

參考的文章:

  • Nodejs實現圖片上傳、壓縮預覽、定時刪除功能

  • 基于vue+axios+lrz.js微信端圖片壓縮上傳方法

  • JS和Canvas實現圖片的預覽壓縮和上傳功能

  • js實現上傳并壓縮圖片效果

  • JS移動端/H5同時選擇多張圖片上傳并使用canvas壓縮圖片

  • Vue.js 2.0 移動端拍照壓縮圖片上傳預覽功能

  • HTML5 JS壓縮圖片并獲取圖片BASE64編碼上傳

文章同步發布:?https://www.geek-share.com/detail/2786432536.html


向AI問一下細節

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

AI

民勤县| 明星| 呈贡县| 济阳县| 桑植县| 汝南县| 丽水市| 宁陕县| 汨罗市| 西城区| 大悟县| 喀喇沁旗| 托克逊县| 江西省| 贡觉县| 靖江市| 吴堡县| 繁峙县| 汉川市| 紫金县| 论坛| 克什克腾旗| 福鼎市| 平阴县| 广水市| 邵阳市| 渑池县| 天台县| 盱眙县| 塔河县| 太和县| 四川省| 肥乡县| 桃园县| 桂林市| 乐陵市| 临沧市| 苍山县| 格尔木市| 太仆寺旗| 镶黄旗|