前端图片旋转90/180/270/360度,并生成新的图片url

export function getRotateImg(url, deg = 0) {
  return new Promise((resolve) => {
    if (!deg || !(deg % 360)) {
      resolve(url);
      return;
    }
    const img = new Image();
    img.src = url;
    img.setAttribute("crossOrigin", "anonymous");
    img.onload = function () {
      const { width, height } = this;
      const x = 0,
        y = 0;
      const canvas = document.createElement("canvas");
      canvas.width = deg % 180 ? height : width;
      canvas.height = deg % 180 ? width : height;
      const ctx = canvas.getContext("2d");
      ctx.save();
      ctx.translate(x + canvas.width / 2, y + canvas.height / 2);
      ctx.rotate(deg * (Math.PI / 180));
      if (deg % 180) {
        ctx.translate(-x - canvas.height / 2, -y - canvas.width / 2);
        ctx.drawImage(img, x, y, canvas.height, canvas.width);
      } else {
        ctx.translate(-x - canvas.width / 2, -y - canvas.height / 2);
        ctx.drawImage(img, x, y, canvas.width, canvas.height);
      }
      ctx.restore();
      const src = canvas.toDataURL("image/png");
      resolve(src);
    };
  });
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端,您可以使用CSS3的`transform`属性来旋转元素。然后,您可以使用JavaScript中的`HTMLCanvasElement`和`CanvasRenderingContext2D`对象来将旋转后的元素绘制到一个`canvas`元素上,并将其导出为图像文件。 以下是一个示例代码,将一个`<img>`元素旋转90并将其保存为图像: HTML: ```html <img id="my-image" src="input.png"> <canvas id="my-canvas"></canvas> ``` CSS: ```css #my-image { transform: rotate(90deg); } ``` JavaScript: ```javascript // 获取元素和画布对象 const img = document.getElementById('my-image'); const canvas = document.getElementById('my-canvas'); const ctx = canvas.getContext('2d'); // 将画布大小设置为元素大小 canvas.width = img.width; canvas.height = img.height; // 绘制旋转后的元素到画布上 ctx.translate(img.width / 2, img.height / 2); ctx.rotate(Math.PI / 2); ctx.drawImage(img, -img.width / 2, -img.height / 2); // 导出画布为图像 const link = document.createElement('a'); link.download = 'output.png'; link.href = canvas.toDataURL('image/png'); link.click(); ``` 在这个例子中,我们首先获取`<img>`和`<canvas>`元素对象。然后,我们使用CSS的`transform`属性来将`<img>`元素旋转90。接下来,我们将画布的大小设置为原始元素的大小,并使用`CanvasRenderingContext2D`对象将旋转后的元素绘制到画布上。最后,我们使用`toDataURL`函数将画布导出为PNG格式的数据URL,并通过创建一个`<a>`元素来触发下载操作。 您可以将以上代码保存到一个HTML文件中,例如`rotate_element.html`,并在浏览器中打开它来运行它。请注意,由于浏览器的安全限制,您可能无法直接将数据URL导出为文件,您可能需要将其复制并手动将其保存为PNG文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值