vue 利用 Html2canvas 完成页面截图下载

// 声明一个画布元素,存储需下载图片范围
let canvas = document.createElement("canvas");
// 获取需下载范围元素
let img = this.$refs["QRcodeSrcImg"];
// 图片高度
var w = parseInt(window.getComputedStyle(img).width);
// 图片宽度
var h = parseInt(window.getComputedStyle(img).height);
// 声明画布宽高
canvas.width = w;
canvas.height = h;
canvas.style.width = w + "px";
canvas.style.height = h + "px";
// 利用 html2canvas 下载 canvas
html2canvas(img, { canvas: canvas }).then(function(canvas) {
  const a = document.createElement("a");
  // 文件名
  a.download = name | 'html2canvas';
  // 设置 a href 属性
  a.setAttribute("href", canvas.toDataURL());
  // 触发 a 点击事件
  a.click();
});

如果需下载图片范围中存在从服务器获取到的图片,则需要把图片转换成base64格式才可以下载,不然下载的图片会出现空白
图片转base64

// 图片下载
var image = new Image();
// 如果图片是跨域的,填上"*"或者"anonymous" 核心是请求头中包含了 Origin: "anonymous"或"*" 字段,
//响应头中就会附加上 Access-Control-Allow-Origin: * 字段,
image.crossOrigin = "anonymous"; image.src = url;
// 路径加载
image.onload = function() {
  var ext = url.substring(url.lastIndexOf(".") + 1);
  var base64 = getBase64Image(image, ext);
  _this.QRcodeSrc = base64;
};
// 图片转 base64 格式
function getBase64Image(image, ext) {
  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);
  var base64 = canvas.toDataURL("image/" + ext);
  return base64;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,909评论 1 32
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,454评论 1 45
  • A模块指导师需要读的书 1、《道德经》(总部有售) 2、《辩证唯物主义》(总部有售) 3、《形式逻辑学》(总部有售...
    喜欢空谷幽兰阅读 1,486评论 0 0
  • 今天也挺累,因为昨晚撸串喝啤酒,和乐嘉聊天到一点半才睡。今早就很舒服地睡到10点,刚好没迟到英语课。下午翘了数值,...
    乐观的自卑者阅读 1,004评论 0 0

友情链接更多精彩内容