创建离屏 Canvas 将图片进行旋转,并转为二进制流
今日在开发中遇到一个问题,需要将图片进行旋转,使用 Canvas 进行处理。
原图片为:

转换方法如下:
/** * 创建离屏 Canvas 处理旋转 * @param srcDataURL * @returns */const rotateCanvas = (srcDataURL: string): Promise<{ dataURL: string; blob: Blob }> => {  return new Promise((resolve) => {    const img = new Image();    img.src = srcDataURL;
    img.onload = () => {      const canvas = document.createElement('canvas');      const ctx = canvas.getContext('2d');
      // 旋转后尺寸交换      canvas.width = img.height;  // 原始高度变为新宽度      canvas.height = img.width;  // 原始宽度变为新高度
      // 执行旋转绘制      ctx.translate(canvas.width / 2, canvas.height / 2);      ctx.rotate(-(90 * Math.PI) / 180); // 逆时针旋转90度      ctx.drawImage(img, -img.width / 2, -img.height / 2);
      // 生成结果      canvas.toBlob((rotatedBlob) => {        resolve({          dataURL: canvas.toDataURL(),          blob: rotatedBlob,        });      }, 'image/png');    };  });};使用:
// 执行旋转并更新状态const { dataURL: rotatedDataURL, blob: rotatedBlob } = await rotateCanvas(dataURL);最终效果:

 关于我
关于我