使用canvas调整图片大小

最近在做图片上传,上传前需要做图片大小的统一处理

/**
 * 调整图片大小
 * @param { string } url 图片地址或Base64格式图片
 */
const resize = (url) => {
  return new Promise((resolve, reject) => {
    const imgSize = 100
    const canvas = document.getElementById('canvas') // 记得将界面canvas隐藏
    const ctx = canvas.getContext('2d')
    canvas.width = imgSize
    canvas.height = imgSize
    const image = new Image();
    image.src = url;
    image.onload = function() {
      ctx.drawImage(image, 0, 0, imgSize, imgSize);
      resolve(canvas.toDataURL()) // 将canvas转为base64
    };
  })
}
### 使用JavaScript Canvas API调整图片大小 当处理图像并希望利用Canvas API来改变其尺寸时,可以创建一个`<canvas>`元素,并通过该元素的上下文对象绘制已加载完成的图像。下面是一个具体的例子,展示了如何实现这一功能[^1]。 ```javascript var img = new Image(); img.onload = function() { // 创建一个新的画布元素 var canvas = document.createElement('canvas'); // 获取2D绘图环境 var ctx = canvas.getContext('2d'); // 设置新的宽度和高度 const NEW_WIDTH = 188; const NEW_HEIGHT = 150; // 将新尺寸应用到画布上 canvas.width = NEW_WIDTH; canvas.height = NEW_HEIGHT; // 把原始图像按照指定的新尺寸绘制出来 ctx.drawImage(img, 0, 0, NEW_WIDTH, NEW_HEIGHT); // 可选操作:将修改后的图像保存为data URL形式或其他方式显示它 }; // 加载要缩放的源图像文件 img.src = 'original.jpg'; ``` 此代码片段首先定义了一个Image对象用于加载外部图片资源,在图片完全加载之后执行回调函数。在这个回调里,先设置了目标宽高(这里设为了固定值),接着调用了drawImage方法按给定参数重绘了原图。如果想要让最终渲染出来的结果适应浏览器视窗,则可以根据实际情况动态设置canvas的width和height属性[^2]。 对于响应式设计而言,可能还需要考虑监听窗口大小变化事件以便及时更新画布尺寸: ```javascript function resizeCanvasToWindow(){ let canvas = document.querySelector("canvas"); if (canvas){ canvas.width = window.innerWidth; canvas.height = window.innerHeight; // 如果有其他依赖于canvas尺寸的操作也应在此处同步刷新 redraw(); // 假设有这样一个函数负责重新绘制内容 } } window.addEventListener('resize', resizeCanvasToWindow); ``` 这段脚本会确保每当用户调整浏览器窗口大小时都会触发相应的逻辑去适配最新的布局需求[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值