溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

利用JavaScript實(shí)現(xiàn)圖片按比例縮小寬高

發(fā)布時(shí)間:2020-11-07 16:14:53 來(lái)源:億速云 閱讀:405 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)利用JavaScript實(shí)現(xiàn)圖片按比例縮小寬高,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

具體內(nèi)容如下

<!DOCTYPE html>
<html>
<head>
 <title>JS 按比例縮小圖片寬高</title>
</head>
 
<body>
 <div>
 <input type="file" name="" id="upload">
 <img src="" alt="" id="preview">
 </div>
</body>
<script>
 var upd =document.getElementById('upload');
 upd.addEventListener('change',function(e){
 var file=e.target.files[0]; 
 var reader=new FileReader();
 var img = document.createElement('img');
 var canvas=document.createElement('canvas');
 var context=canvas.getContext('2d'); 
 
 reader.onload=function(e){ 
 img.src = e.target.result;
 img.onload = function () {
 var imgWidth=this.width;//上傳圖片的寬
 var imgHeight = this.height;//上傳圖片的高 
 //按比例縮放后圖片寬高 
 var targetWidth = imgWidth;
 var targetHeight = imgHeight; 
 var maxWidth=1920;//圖片最大寬
 var maxHeight = 1080;//圖片最大高 
 var scale = imgWidth / imgHeight;//原圖寬高比例
 
 //如果原圖寬大于最大寬度
 if(imgWidth>maxWidth){
 targetWidth = maxWidth;
 targetHeight = targetWidth/scale;
 }
 //縮放后高度仍然大于最大高度繼續(xù)按比例縮小
 if(targetHeight>maxHeight){
 targetHeight = maxHeight
 targetWidth = targetHeight*scale;
 }
 canvas.width=targetWidth;//canvas的寬=圖片的寬
 canvas.height=targetHeight;//canvas的高=圖片的高
 
 context.clearRect(0,0,targetWidth,targetHeight)//清理canvas
 context.drawImage(img,0,0,targetWidth,targetHeight)//canvas繪圖
 var newUrl=canvas.toDataURL('image',0.92);//canvas導(dǎo)出成為base64
 preview.src=newUrl
 }
 }
 reader.readAsDataURL(file);
 })
</script>
 
</html>

小編再為大家分享一段:圖片按寬高比例進(jìn)行自動(dòng)縮放代碼

/**
 * 圖片按寬高比例進(jìn)行自動(dòng)縮放
 * @param ImgObj
 * 縮放圖片源對(duì)象
 * @param maxWidth
 * 允許縮放的最大寬度
 * @param maxHeight
 * 允許縮放的最大高度
 * @usage 
 * 調(diào)用:<img src="圖片" onload="javascript:DrawImage(this,100,100)">
 */
function DrawImage(ImgObj, maxWidth, maxHeight){
 var image = new Image();
 //原圖片原始地址(用于獲取原圖片的真實(shí)寬高,當(dāng)<img>標(biāo)簽指定了寬、高時(shí)不受影響)
 image.src = ImgObj.src;
 // 用于設(shè)定圖片的寬度和高度
 var tempWidth;
 var tempHeight;
 
 if(image.width > 0 && image.height > 0){
 //原圖片寬高比例 大于 指定的寬高比例,這就說(shuō)明了原圖片的寬度必然 > 高度
 if (image.width/image.height >= maxWidth/maxHeight) {
  if (image.width > maxWidth) {
  tempWidth = maxWidth;
  // 按原圖片的比例進(jìn)行縮放
  tempHeight = (image.height * maxWidth) / image.width;
  } else {
  // 按原圖片的大小進(jìn)行縮放
  tempWidth = image.width;
  tempHeight = image.height;
  }
 } else {// 原圖片的高度必然 > 寬度
  if (image.height > maxHeight) { 
  tempHeight = maxHeight;
  // 按原圖片的比例進(jìn)行縮放
  tempWidth = (image.width * maxHeight) / image.height; 
  } else {
  // 按原圖片的大小進(jìn)行縮放
  tempWidth = image.width;
  tempHeight = image.height;
  }
 }
 // 設(shè)置頁(yè)面圖片的寬和高
 ImgObj.height = tempHeight;
 ImgObj.width = tempWidth;
 // 提示圖片的原來(lái)大小
 ImgObj.alt = image.width + "×" + image.height;
 }
}

上述就是小編為大家分享的利用JavaScript實(shí)現(xiàn)圖片按比例縮小寬高了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI