JS實(shí)現(xiàn)按比例縮小圖片寬高
本文實(shí)例為大家分享了JS實(shí)現(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)行自動(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;
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- js實(shí)現(xiàn)圖片旋轉(zhuǎn) js滾動(dòng)鼠標(biāo)中間對(duì)圖片放大縮小
- JS簡(jiǎn)單的圖片放大縮小的兩種方法
- JS網(wǎng)頁(yè)圖片查看器(兼容IE、FF)可控制圖片放大縮小移動(dòng)
- JS等比例縮小圖片尺寸的實(shí)例
- javascript 圖片放大縮小功能實(shí)現(xiàn)代碼
- js實(shí)現(xiàn)雙擊圖片放大單擊縮小的方法
- JS實(shí)現(xiàn)圖片放大縮小的方法
- JS自動(dòng)縮小超出大小的圖片
- JS實(shí)現(xiàn)圖片局部放大或縮小的方法
- js實(shí)現(xiàn)圖片緩慢放大縮小效果
相關(guān)文章
webpack4手動(dòng)搭建Vue開(kāi)發(fā)環(huán)境實(shí)現(xiàn)todoList項(xiàng)目的方法
這篇文章主要介紹了webpack4手動(dòng)搭建Vue開(kāi)發(fā)環(huán)境實(shí)現(xiàn)todoList項(xiàng)目的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05
屏蔽IE彈出"您查看的網(wǎng)頁(yè)正在試圖關(guān)閉窗口,是否關(guān)閉此窗口"的方法
本篇文章主要是對(duì)屏蔽IE彈出"您查看的網(wǎng)頁(yè)正在試圖關(guān)閉窗口,是否關(guān)閉此窗口"的方法進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12
Bootstrap table簡(jiǎn)單使用總結(jié)
這篇文章主要為大家總結(jié)了Bootstrap table的簡(jiǎn)單使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
JavaScript實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)飄落的雪花
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)飄落的雪花,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
用javascrpt將指定網(wǎng)頁(yè)保存為Excel的代碼
這段代碼在服務(wù)器中沒(méi)有權(quán)限,可以保存在本地,存為htm文件,運(yùn)行即可,就可以把文本內(nèi)容存為excel文件了2008-01-01

