Go to comments

同比例缩放图片

第一个方法

最开始学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。

a2cc7cd98d1001e9d001a78db40e7bec54e79777.jpg


下面是我写的代码,同样用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.

Leave a Reply

换一张