同比例缩放图片
第一个方法
最开始学PHP的时候,计算百分比实现图片同比例缩放,
思路是先算出图片一条边的缩略百分比,然后用百分比对另外一个边同比例进行缩放
最近在学js,下面用js实现
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图片缩略</title>
<style>
</style>
</head>
<body>
<img src="https://20180416-1252237835.cos.ap-beijing.myqcloud.com/common/pictufe/size011.jpeg"/>
<div></div>
<script>
var originUrl = document.querySelector('img').src; // 选中图片,并获取到图片地址
var createImg = new Image(); // 创建一个图片类
createImg.src = originUrl; // 设置图片的src
// 加载完图片执行
createImg.onload = function(){
// 获取到图片宽高
var originWidth = createImg.width;
var originHeight = createImg.height;
console.log(originWidth, originHeight); // 968 1337
// 图片缩略的宽高
var resizeHeight = null;
var resizeWidth = 500;
// 原始图片宽968缩放到500,计算图片高的缩放比,公式: 500 / 968 * 100
var Percentage = resizeWidth / originWidth * 100;
// 有了宽的缩放比,同比例缩放高,公式:图片高 / 100 * 宽缩比
// 有浮点数取整数,其实四舍五入更准确
resizeHeight = parseInt( originHeight / 100 * Percentage );
// console.log(resizeHeight);
// 把缩放的的图片插入到div
var oDiv = document.querySelector('div');
oDiv.innerHTML = '<img style="height:'+resizeHeight+'px;width:'+resizeWidth+'px;" src="https://20180416-1252237835.cos.ap-beijing.myqcloud.com/common/pictufe/size011.jpeg" />';
}
</script>
</body>
</html>宽968
高1337
宽缩小到500,高同比例缩小,photoshop里面的是 691
500 / 968 * 100 = 51.652892561983464 1337 / 100 * 51.652892561983464 = 690.5991735537189
第二个方法
下面是在百度知道里面看到一个同比例缩放的问题
https://zhidao.baidu.com/question/1760376915538280228.html
提问:
已知1号长方形长150,宽502。 已知2号长方形长60 求2号长方形宽X,请问如何计算?目前已知一种计算方法是2号长方形“长 x 1号长方形宽 ÷ 1号长方形长(60x50÷150)=20 "请问这种计算方式是什么原理除此之外还有什么计算方法。
回答:
这个其实是用的图形(三角形和矩形)相似原理,那么他们的对应边相比相等,就是图形的两对应边努力相等,应该是x/50=60/150,x=60x50/150=20。

下面是我写的代码,同样用js
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图片缩略</title>
<style>
</style>
</head>
<body>
<img src="http://ruyic.com//blog/uploads/image/201907/pic1564549780422166.jpg"/>
<div><div>
<script>
//选中图片
var oimg = document.querySelector('img');
//获取到图片地址
var img_url = oimg.src;
//创建一个类
var img = new Image();
//改变图片的src
img.src = img_url;
//加载完图片执行
img.onload = function(){
//获取到图片高喝宽
//console.log('width:'+img.width+',height:'+img.height);
var imgW = img.width;//width:580
var imgH = img.height;//height:1031
//图片缩略的高喝宽
var thumbnailH = 400;
var thumbnailW = null;
//取得图片高度"1031"缩率到60的百分比。图片是竖高得,所以用1031求百分百得值
//公式:60/1031*100
var thumbnailW = (thumbnailH*imgW)/imgH;
console.log(parseInt(thumbnailW));
thumbnailW = parseInt(thumbnailW);
//把图片输出到div
var odiv = document.querySelector('div');
odiv.innerHTML = '<img style="height:'+thumbnailH+'px;width:'+thumbnailW+'px;" src="http://ruyic.com//blog/uploads/image/201907/pic1564549780422166.jpg" />';
}
</script>
</body>
</html>js在图片加载时遇到的一些问题,
记录一下解决方法的连接
https://www.cnblogs.com/hutuzhu/p/4092907.html
https://www.jianshu.com/p/8e07eaca0197
Leave a comment
0 Comments.
