JS實現(xiàn)按比例縮小圖片寬高
更新時間:2020年08月24日 10:22:17 作者:xxs18326183038
這篇文章主要為大家詳細(xì)介紹了JS實現(xiàn)按比例縮小圖片寬高,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了JS實現(xiàn)按比例縮小圖片寬高的具體代碼,供大家參考,具體內(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)行自動縮放代碼
/**
* 圖片按寬高比例進(jìn)行自動縮放
* @param ImgObj
* 縮放圖片源對象
* @param maxWidth
* 允許縮放的最大寬度
* @param maxHeight
* 允許縮放的最大高度
* @usage
* 調(diào)用:<img src="圖片" onload="javascript:DrawImage(this,100,100)">
*/
function DrawImage(ImgObj, maxWidth, maxHeight){
var image = new Image();
//原圖片原始地址(用于獲取原圖片的真實寬高,當(dāng)<img>標(biāo)簽指定了寬、高時不受影響)
image.src = ImgObj.src;
// 用于設(shè)定圖片的寬度和高度
var tempWidth;
var tempHeight;
if(image.width > 0 && image.height > 0){
//原圖片寬高比例 大于 指定的寬高比例,這就說明了原圖片的寬度必然 > 高度
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è)置頁面圖片的寬和高
ImgObj.height = tempHeight;
ImgObj.width = tempWidth;
// 提示圖片的原來大小
ImgObj.alt = image.width + "×" + image.height;
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
webpack4手動搭建Vue開發(fā)環(huán)境實現(xiàn)todoList項目的方法
這篇文章主要介紹了webpack4手動搭建Vue開發(fā)環(huán)境實現(xiàn)todoList項目的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05
屏蔽IE彈出"您查看的網(wǎng)頁正在試圖關(guān)閉窗口,是否關(guān)閉此窗口"的方法
本篇文章主要是對屏蔽IE彈出"您查看的網(wǎng)頁正在試圖關(guān)閉窗口,是否關(guān)閉此窗口"的方法進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12
JavaScript實現(xiàn)動態(tài)網(wǎng)頁飄落的雪花
這篇文章主要為大家詳細(xì)介紹了JavaScript實現(xiàn)動態(tài)網(wǎng)頁飄落的雪花,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06
用javascrpt將指定網(wǎng)頁保存為Excel的代碼
這段代碼在服務(wù)器中沒有權(quán)限,可以保存在本地,存為htm文件,運行即可,就可以把文本內(nèi)容存為excel文件了2008-01-01

