news 2026/7/25 1:40:17

商城后台管理系统 02, Vue项目-下载图片资源

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
商城后台管理系统 02, Vue项目-下载图片资源
html2canvas 官网: http://html2canvas.hertzen.com/

首先关于canvas,可以看看官网https://www.canvasapi.cn/HTMLCanvasElement/,

canvasjs图标库的官网:https://canvasjs.com/jquery-charts/

canvas官网

https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLCanvasElement/toDataURL HTMLCanvasElement.toDataURL() 方法返回一个包含图片表示的 data URI,此图片的格式由 type 参数指定。 可以指定所需的文件格式和图片质量。如果未指定文件格式,或指定的文件格式不受支持,则数据将以 image/png 导出。换句话说,如果传入的类型非 image/png,但是返回的值以 data:image/png 开头,那么这个类型是不受支持的。 浏览器被要求支持 image/png,许多浏览器也会支持 image/jpeg 和 image/webp 在内的其他格式。 对于支持编码分辨率元数据的文件格式,创建的图像数据将具有 96dpi 的分辨率。
Vue项目-下载图片资源 实现代码如下
1, src/views/User/index.js <template> <div class="user"> <div class="hetong"> <!-- 1, 查看合同 --> 签约合同内容:<el-button type="primary" size="small" @click="look">查看合同</el-button> </div> <VuePdf ref="myPdf" /> <!-- 2, 查看发票 --> <div class="money"> <el-row :gutter="20"> <el-col :span="8"> <el-card class="box-card"> <div slot="header" class="clearfix"> <span>卡片名称</span> <el-button @click="download" style="float: right; padding: 3px 0;" type=" text">下载发票</el-button> </div> <div class="text item"> <img ref="img" style="width: 400px;" :src="imgUrl" alt="" /> </div> </el-card> </el-col> <el-col :span="8"> <el-card class="box-card"> <div slot="header" class="clearfix"> <span>卡片名称</span> <el-button @click="downs" style="float: right; padding: 3px 0;" type=" text">下载不同源发票</el-button> </div> <div class="text item"> <img ref="myimg" style="width: 400px;" src="../../assets/images/88.png" alt="" /> </div> </el-card> </el-col> <el-col :span="8"> <el-card class="box-card"> <div slot="header" class="clearfix"> <span>卡片名称</span> <el-button @click="down()" style="float: right; padding: 3px 0;" type=" text">下载本地发票</el-button> </div> <div class="text item"> <img ref="img" style="width: 400px;" :src="imgUrl" alt="" /> </div> </el-card> </el-col> </el-row> </div> </div> </template> <script> import VuePdf from '@/views/User/VuePdf'; import img from '@/assets/images/88.png'; export default { data() { return { imgUrl: img, }; }, components: { VuePdf }, methods: { // 查看合同 look() { this.$refs.myPdf.dialogVisible = true }, download() { // 1, 新窗口打开网址 右键保存 look() open() let url = this.$refs.img; console.log(url.src); window.location.href = url.src; }, // 2, 必须同源才能下载 可以直接下载 down() { var alink = document.createElement("a"); alink.href = this.imgUrl; console.log(this.imgUrl); alink.download = "pic"; // 图片名 alink.click(); }, // 解决图片不同源下载问题 downloadImage(imgsrc, name) { // 下载图片地址和图片名 创建图片 var image = new Image(); // <img /> // 解决跨域 canvas 污染问题 image.setAttribute("crossOrigin", "anonymous"); // 读图片 image.onload = function() { var canvas = document.createElement("canvas"); canvas.width = image.width; canvas.height = image.height; var context = canvas.getContext("2d"); context.drawImage(image, 0, 0, image.width, image.height); // 得到图片的 base64 编码数据 图片格式 默认为 image/png var url = canvas.toDataURL("image/png"); // 生成一个 a 元素 var a = document.createElement("a"); // 创建一个单击事件 var event = new MouseEvent("click"); // 设置图片名称 a.download = name || "photo"; // 将生成的URL设置为a.href属性 a.href = url; // 触发a的单击事件 a.dispatchEvent(event); }; // 给图片赋值 image.src = imgsrc; }, downs() { this.downloadImage(this.$refs.myimg.src, "pic"); }, }, }; </script> <style lang="less" scoped> .user { margin: 10px; } </style>

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/24 16:52:34

spark的统一内存管理机制

Spark的统一内存管理机制通过动态分配内存资源来优化计算效率。其核心设计将堆内存划分为统一的内存池&#xff0c;主要包含以下部分&#xff1a;根据Spark 统一内存管理机制&#xff0c;堆内存被划分为了两块&#xff0c;Storage 和Execution。Storage 主要用于缓存数据&#…

作者头像 李华
网站建设 2026/7/24 21:38:53

终极方案:巧用PVC与StorageClass彻底解决Hadoop在K8s的存储难题

还在为Hadoop在Kubernetes环境下的存储配置头疼不已吗&#xff1f;数据丢失、扩容困难、性能瓶颈&#xff0c;这些存储痛点让很多大数据工程师在容器化转型的道路上举步维艰。今天&#xff0c;我们就来解锁一套让Hadoop在K8s中存储无忧的实战方案&#xff0c;通过PVC与StorageC…

作者头像 李华
网站建设 2026/7/24 5:39:42

8、算法与数据结构实用案例解析

算法与数据结构实用案例解析 1. 电话号码规范化 在实际开发中,电话号码的格式可能多种多样,为了统一处理,需要对其进行规范化。以下是一个示例程序,它可以根据要求对给定的电话号码列表进行规范化,并将结果打印到控制台: int main() {std::vector<std::string>…

作者头像 李华
网站建设 2026/7/24 4:46:26

palera1n越狱终极指南:从零开始解锁iOS设备完整教程

palera1n越狱终极指南&#xff1a;从零开始解锁iOS设备完整教程 【免费下载链接】palera1n Jailbreak for arm64 devices on iOS 15.0 项目地址: https://gitcode.com/GitHub_Trending/pa/palera1n 想要让你的旧iPad重获新生吗&#xff1f;palera1n越狱工具就是你的魔法…

作者头像 李华
网站建设 2026/7/23 13:20:45

GLM-4-32B-0414:重塑智能体技术栈的推理引擎革命

GLM-4-32B-0414&#xff1a;重塑智能体技术栈的推理引擎革命 【免费下载链接】GLM-4-32B-0414 项目地址: https://ai.gitcode.com/zai-org/GLM-4-32B-0414 在人工智能技术快速迭代的今天&#xff0c;智谱AI推出的GLM-4-32B-0414系列模型正在重新定义智能体的能力边界。…

作者头像 李华
网站建设 2026/7/23 22:05:46

终极色彩生成器:一键打造完美配色方案

终极色彩生成器&#xff1a;一键打造完美配色方案 【免费下载链接】tints-and-shades &#x1f308; Display tints and shades of a given hex color in 10% increments. 项目地址: https://gitcode.com/gh_mirrors/ti/tints-and-shades 在数字设计的世界里&#xff0c…

作者头像 李华