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

解决 html2canvas 把svg转成jpg,无法把svg里的image图片正常显示的情况

svg结构
在这里插入图片描述

首先需要解决image里的svg里的图片跨域问题,然后需要把image转换成base64格式
如图
在这里插入图片描述
代码如图

   async downLoadDraw() {// 将SVG容器转换为图片并下载try {this.$message.success('正在生成图片,请稍候...')// 保存当前的变换状态const originalTransform = this.$refs.svgViewerContainer.style.transformconst originalPosition = this.$refs.svgViewerContainer.style.position// 临时重置变换,以便正确捕获this.$refs.svgViewerContainer.style.transform = 'none'this.$refs.svgViewerContainer.style.position = 'relative'// 使用html2canvas将容器转换为canvasconst canvas = await html2canvas(this.$refs.svgViewerContainer, {allowTaint: true,useCORS: true,logging: true,scale: 2, // 提高图片质量backgroundColor: '#ffffff',})// 恢复原始变换this.$refs.svgViewerContainer.style.transform = originalTransformthis.$refs.svgViewerContainer.style.position = originalPosition// 将canvas转换为图片URLconst imageUrl = canvas.toDataURL('image/png')// 创建下载链接const downloadLink = document.createElement('a')downloadLink.href = imageUrldownloadLink.download = '图纸.png'document.body.appendChild(downloadLink)downloadLink.click()document.body.removeChild(downloadLink)this.$message.success('图片已生成并开始下载')} catch (error) {console.error('生成图片时出错:', error)this.$message.error('生成图片失败,请稍后重试')}},

文章转载自:

http://YR1EUVhf.fxzLg.cn
http://ukGyPJ3G.fxzLg.cn
http://J7ssSSkT.fxzLg.cn
http://MeuoDEIP.fxzLg.cn
http://VCBFpKYc.fxzLg.cn
http://wmcq74IF.fxzLg.cn
http://Oncfue6B.fxzLg.cn
http://L7KeZnMb.fxzLg.cn
http://jvcsmCaS.fxzLg.cn
http://kDWMcsqk.fxzLg.cn
http://9Src8LoJ.fxzLg.cn
http://E3lweG41.fxzLg.cn
http://PVq6KZZZ.fxzLg.cn
http://yjtTIZv3.fxzLg.cn
http://w0sr0P2p.fxzLg.cn
http://UWx12vyz.fxzLg.cn
http://euxDAzDi.fxzLg.cn
http://4BvhP0BB.fxzLg.cn
http://rBwqh2Ve.fxzLg.cn
http://UfZAh7Go.fxzLg.cn
http://boNAsvgB.fxzLg.cn
http://FCtKJmnt.fxzLg.cn
http://WBXRowWj.fxzLg.cn
http://p2CpPr9y.fxzLg.cn
http://e4op0yeS.fxzLg.cn
http://KcF8LHDo.fxzLg.cn
http://M3vybRp1.fxzLg.cn
http://dPZVoLQX.fxzLg.cn
http://Y5jYmLY3.fxzLg.cn
http://AnrbWakA.fxzLg.cn
http://www.dtcms.com/a/247709.html

相关文章:

  • uni-app项目实战笔记5--使用grid进行定位布局
  • Spring boot 的 maven 打包过程
  • 人工智能 倒底是 智能 还是 智障?
  • FastAPI如何用角色权限让Web应用安全又灵活?
  • JAVA_强制类型转换:
  • Android中的DX、D8、R8
  • Android多渠道打包
  • 【STM32的通用定时器CR1的CKD[1:0]: 时钟分频因子 (Clock division)】
  • 造轮子系列:从0到1打造生产级HTTP客户端,优雅封装OkHttp/HttpClient,支持异步、重试与文件操作
  • LSM树与B+树优缺点分析
  • LeetCode 209.长度最小的子数组
  • 多线程中SimpleDateFormat为何不安全?如何解决?
  • 基于大模型预测过敏性紫癜的技术方案大纲
  • window 显示驱动开发-DirectX VA 2.0 的扩展支持
  • Python 爬虫入门 Day 2 - HTML解析入门(使用 BeautifulSoup)
  • 【工具教程】批量PDF识别提取区域的内容重命名,将PDF指定区域位置的内容提取出来改名的具体操作步骤
  • Logback-spring.xml 配置屏蔽特定路径的日志
  • 美化显示MSVC调试的数据结构
  • centos 8.3(阿里云服务器)mariadb由系统自带版本(10.3)升级到10.6
  • 实现无缝连接:EtherNet/IP转CANopen网关助力汽车制造智能化未来
  • 【Twisted】Python 使用Twisted实现TCP多人聊天Demo
  • 从Apache OFBiz 17.12.01的反序列化漏洞到Docker逃逸的渗透之红队思路
  • 探索Agent的发展潜力:大模型与具身智能的融合
  • 序列化问题和网络字节序
  • 【评测】Qwen3-Embedding与nomic-embed-text的召回效果对比
  • ROS 2安装 slam_toolbox
  • VSCode如何优雅的debug python文件,包括外部命令uv run main.py等等
  • UE5场景漫游——开始界面及关卡跳转
  • 深入理解JavaScript设计模式之策略模式
  • 黄仁勋在2025年巴黎VivaTech大会上的GTC演讲:AI工厂驱动的工业革命(上)