图片等比例缩放问题

核心:通过给定的宽度等比例计算出新的高度——>然后通过给定的长宽得在画布上得到新的图片

oldWith=image.width;

oldHeight=image.height;

newHeight=Math.floor(oldHeight/oldWidth*newWidth)

过程:

export constdownscaleImage= (dataUrl, newWidth, callback, imageType, imageArguments) => {

  let image, oldWidth, oldHeight, newHeight, canvas, ctx, newDataUrl;

 

  // Provide default values

  imageType = imageType ||"image/jpeg";

  imageArguments = imageArguments ||0.7;

 

  // Create a temporary image so that we can compute the height of the downscaled image.

  image =newImage();

  image.src = dataUrl;

 

  image.addEventListener("load", function () {

    oldWidth = image.width;

    oldHeight = image.height;

console.log('old width: %o, old height: %o', oldWidth, oldHeight)

    newHeight = Math.floor(oldHeight / oldWidth * newWidth)

 

    // Create a temporary canvas to draw the downscaled image on.

    canvas = document.createElement("canvas");

    canvas.width = newWidth;

    canvas.height = newHeight;

 

    // Draw the downscaled image on the canvas and return the new data URL.

    ctx = canvas.getContext("2d");

    ctx.drawImage(image, 0, 0, newWidth, newHeight);

    newDataUrl = canvas.toDataURL(imageType, imageArguments);

 

    returncallback(newDataUrl)

    // return newDataUrl;

  });

}

调用部分:

 let fileData = files.map(element => {

      downscaleImage(element.url, 750, (src) => {

        element.url = src

      })

      return element

    })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值