之前写过下载二维码的需求,需求简单,只要能下载就行,但是下载到本地就一个纯二维码的小图片,感觉不怎么美观。
闲来无事,以下自己写了个小demo,丰富canvas下载到本地的图片内容,可以添加照片,描述文字,背景样式等…

准备两个节点

<canvas id="canvas"></canvas>
<a id="download" download href="">下载</a>

js实现绘制

const url = "https://t7.baidu.com/it/u=3766339589,272600460&fm=193&f=GIF";
const img = new Image(); // 创建img元素
const download = document.getElementById("download");const imgFrame = new Image(); // 相框图片
imgFrame.setAttribute("crossorigin", "anonymous");
imgFrame.src = "https://img95.699pic.com/xsj/1c/xv/je.jpg!/fh/300";img.setAttribute("crossorigin", "anonymous"); // 设置该属性 不然使用canvas.toDataURL会报错: Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.img.onload = function () {const imgWidth = 600,imgHeight = 500;const canvas = document.getElementById("canvas"),ctx = canvas.getContext("2d");// 设置画布大小canvas.width = imgWidth + 20;canvas.height = imgHeight + 80;// 绘制背景颜色ctx.fillStyle = "pink";ctx.fillRect(0, 0, canvas.width, canvas.height);// 绘制文字(文本内容,x坐标,y坐标)ctx.font = "28px serif";ctx.fillStyle = "blue";ctx.textAlign = "center";ctx.fillText("点击图片或者下载按钮 下载图片到本地", canvas.width / 2, canvas.height - 10); // 中间位置开始绘制 配合 ctx.textAlign 使文字水平居中ctx.strokeStyle = "red"; // 文本边框颜色ctx.strokeText("点击图片或者下载按钮 下载图片到本地", canvas.width / 2, canvas.height - 10); // 文本边框// 绘制图片(路径,x坐标,y坐标,x缩放大小,y缩放大小)ctx.drawImage(imgFrame, 10, 10, imgWidth, imgHeight);// 前 4 个是定义图像源的切片位置和大小,后 4 个则是定义切片的目标显示位置和大小ctx.drawImage(img, 380, 100, 500, 380, 61, 65, 494, 380);// 画线边框颜色ctx.strokeStyle = "red"; ctx.beginPath();ctx.moveTo(60, 65);ctx.lineTo(560, 65);ctx.lineTo(560, 450);ctx.lineTo(60, 450);ctx.lineTo(60, 65);ctx.stroke();download.href = canvas.toDataURL("image/png");
};img.src = url; // 设置图片源地址// 点击图片下载
canvas.onclick = function () {download.click();
};

页面效果展示

下载到本地是包涵背景 + 图片 + 文字 的效果,可以实现页面中的图片,二维码等下载需求

canvas绘制图片二维码+文字+背景 下载到本地相关推荐

  1. 微信小程序实现生成二维码功能并下载到本地

    微信小程序实现生成二维码功能并下载到本地 背景 实现 备注 背景 有这样一个需求,后台返回了url地址,微信小程序将url地址转成二维码图片,展示在页面上,并且该二维码图片可下载到用户手机相册中 实现 ...

  2. uniapp 生成分享图片(图片+二维码),并保存到本地相册 功能实现

    生成分享图片 使用场景 在使用电商app时,通常有个分享给好友的功能,如果想要做分销类型,发展下线,也就是你邀请的好友是你的下级的话,就需要分享时将个人信息附带进去,因此会涉及到生成分享图片. 界面 ...

  3. vue 在线生成二维码 二维码生成背景下载

    安装 引用 3.注入 app.vue 这里只是生成二维码 生成二维码 js 这里是需要二维码 并且与另一张合成一张image的! 上代码

  4. 前端合成二维码与背景图片,批量导出ZIP下载

    前端合成二维码与背景图片,批量导出ZIP下载 背景:需要生成很多的二维码,并且结合背景图片一起生成图片,批量下载到本地,提供给打印厂商进行打印. 方案1:后台合成,后台提供下载. 方案2:前端合成,前 ...

  5. opencv中的美图技巧(祛斑,词云,风格迁移,抠图,插图,修改背景,图片二维码)等着你的女朋友夸你吧

    个人ps 没掌握得怎么好,尝试用程序来完成ps的功能吧. 有斑点怎么办:祛斑. 只有一张城市白天图,像生成黑夜图怎么办,用风格迁移把. 人物抠图就不说啦吧. 没钱带女友旅游世界怎么办,我教你修改你背景 ...

  6. JAVA生成的二维码以及给二维码添加背景图片

    JAVA生成的二维码以及给二维码添加背景图片** 1.页面只需一行代码即可(用ajax请求得不到响应,也可以用表单提交) window.location.href = "${ctx}/qrc ...

  7. 小猿圈web前端简述canvas如何实现二维码和图片合成

    你经常看到活动海报什么的,上都是有各种宣传文案以及二维码形成的,你知道怎么用canvas实现二维码和图片合成,下面小猿圈Linux讲师为你详细介绍一下canvas如何实现二维码和图片合成的. 使用ur ...

  8. PHP给微信二维码 添加背景和昵称 ,微信带参数海报跨坑记录。

    先获取微信二维码,这里我获取的是永久二维码: $wx= $this->getTicket($this->userid);//我带的参数是用户ID,可自由发挥.//下面是相关函数 funct ...

  9. vue 生成二维码 并 可以下载带有边框背景颜色的二维码

    项目需求:需要生成一个可以下载且带有边框背景的二维码 如果只用qrcode.js只能实现下载二维码,但是下载下来的二维码没有边框背景,可识度非常低,所以需要给下载的二维码加个边框,白色灰色之类的 首先 ...

最新文章

  1. [使用心得]maven2之m2eclipse使用手册之六使用Maven2插件创建一个简单的SSH2项目之jetty篇(一)...
  2. 一个有趣的this指向问题
  3. MS SqlServer中少用但是好用的SQL语句
  4. 数据结构与算法总结(完结)
  5. python爬虫进程和线程_python爬虫番外篇(一)进程,线程的初步了解-阿里云开发者社区...
  6. 插入公式_word2016编写文档 插入公式选项为暗,不能操作
  7. 一文搞懂 Spring JPA
  8. 优先队列之Leetcode 23合并K个有序链表
  9. 《Oracle SQL疑难解析》——1.10 删除表中的所有行
  10. python编程:从入门到实践_《Python编程:从入门到实践》【PDF】
  11. 【网络通信 -- SIP 电话】项目实战记录 -- FreeSwitch 服务器搭建与典型 SIP 电话应用
  12. 一些思考:腾讯股价为何持续都低
  13. 微分方程——线性微分方程
  14. 中奖记录html页面,微信小程序 中奖纪录列表滚动
  15. C/C++游戏项目完整教程:《坦克大战》
  16. 新技术焦虑症?来这里拿药 ~~
  17. android alert
  18. GAMLSS代码示例
  19. DIY基于树莓派的OpenTX航模遥控器(一)
  20. IBM X3650 M4安装win 2008 Server操作指南

热门文章

  1. 秒杀系统(1)——秒杀功能设计理念
  2. google 的autodraw
  3. CSS中font属性如何连写?
  4. ubuntu下VSCode的配置
  5. 三维人脸有关技术的往昔与展望
  6. 如何向外行解释:频繁改需求会令程序员炸毛?
  7. 一次将tensorflow中的tf.nn.conv2d优(re)雅(shape)的转化成torch.nn.F.conv2d的咸鱼操作
  8. 20170220找女朋友之路思考总结
  9. SublimeText3中使用terminal终端
  10. 视频教程- 1-1 课程导学和Python简介-Python干货!