当前位置: 首页 > news >正文

canvas画布旋转问题

先说一下为什么要旋转的目的:因为在画布上签名,在不同的设备上我需要不同方向的签名图片,电脑是横屏,手机就是竖屏,所以需要把手机的签名旋转270°,因此写了这个方法。

关于画布旋转的重点就是获取到你的画布元素在 onload 函数里面调用图片旋转的方法

里面的methods.imageRotate就是旋转方法,只是基于vue3写的所以有methods

 $("#file").attr("src", canvas.value.toDataURL("image/png"));const fileImg = document.getElementById("file")fileImg.onload = function () {const imgValue = methods.imageRotate(fileImg, 270)// console.log("imgValue", imgValue)}

图片旋转的封装方法

//图片旋转imageRotate(img, rotate) {let canvas = document.createElement("canvas");let ctx = canvas.getContext("2d");switch (rotate) {case 90: // 旋转90°canvas.width = img.height;canvas.height = img.width;ctx.rotate((90 * Math.PI) / 180);ctx.drawImage(img, 0, -img.height, img.width, img.height);break;case 180: // 旋转180°canvas.width = img.width;canvas.height = img.height;ctx.rotate((180 * Math.PI) / 180);ctx.drawImage(img, -img.width, -img.height, img.width, img.height);break;case 270: // 旋转270°canvas.width = img.height;canvas.height = img.width;ctx.rotate((-90 * Math.PI) / 180);ctx.drawImage(img, -img.width, 0, img.width, img.height);break;default:canvas.width = img.width;canvas.height = img.height;ctx.drawImage(img, 0, 0, img.width, img.height);break;}return canvas.toDataURL("image/png");},

注:改方法并不会改变画布上的内容,是新建了一个变量来存储。

        *   千万记住要在onload调用

http://www.lryc.cn/news/384890.html

相关文章:

  • vue3 【提效】自动导入框架方法 unplugin-auto-import 实用教程
  • clip系列改进Lseg、 group ViT、ViLD、Glip
  • Ubuntu下TensorRT与trtexec工具的安装
  • MySQL定时任务
  • Pandas实用Excel数据汇总
  • 【计算机网络】[第4章 网络层][自用]
  • Unity3D Entity_CacheService实现详解
  • DLMS/COSEM协议—(Green-Book)Gateway protocol
  • Android高级面试_12_项目经验梳理
  • 【项目实训】解决前后端跨域问题
  • Java反射API详解与应用场景
  • 【例子】webpack 开发一个可以加载 markdown 文件的加载器 loader 案例
  • 揭秘!这款电路设计工具让学校师生都爱不释手——SmartEDA的魔力何在?
  • onlyoffice实现打开文档的功能
  • 基于 SpringBoot + Vue 的图书购物商城项目
  • 如何使用kimi智能助手:您的智能生活小助手
  • sql操作
  • 开关电源调试记录-基于DK112(DK1203也一样)作为开关主控芯片的开关电源
  • 【自然语言处理】GPT-5技术突破预测:引领自然语言处理革新的里程碑
  • qt基本窗口类(QWidget,QDialog,QMainWindow)
  • 最新收录历年地震数据,含时间、位置、类型、震级等信息
  • C++ 串口读写
  • WebRTC系列实战-自定义RTP中的extension
  • std::function和std::bind函数
  • 补码的理解,想明白了觉得还挺有趣的
  • FuTalk设计周刊-Vol.027
  • 抖音外卖服务商有哪些,盘点这几家正规服务商!
  • sh脚本模块笔记
  • 关于服务器的一些知识
  • 力扣-和为K的子数组