第十次:vue中点击按钮自动截图并下载图片

功能需求:点击一个按钮,截取对应区域的界面,才对截取的界面进行裁切并下载

  • 下载html2canvas:在控制台输入 npm install html2canvas --save

  • 在项目中引用 :

  import html2canvas from 'html2canvas'
  components: {
    html2canvas
  }
  • 将你需要截取的部分用 id 包裹起来
  <div id="capture" ref="imageTofile">......</div>
  • 获取该区域(这部分写在你的点击下载按钮的方法中)
  html2canvas(document.querySelector("#capture")).then(canvas => {
    const imgUrl = canvas.toDataURL("png"); // 获取生成的图片的url
    console.log(imgUrl)
  })

这样就可以得到你需要需要截取的屏幕区域了

  • 如果你需要再次对这样图片进行裁切
const img = new Image();
img.src = canvas.toDataURL("png");
img.setAttribute('crossOrigin', 'anonymous');
var canvas = document.createElement("canvas");//1. 获取画布

const num = this.dataLength * 48 + 148;
console.log(canvas)
canvas.width = 530;//这个设置不能丢,否者会成为canvas默认的300*150的大小
canvas.height = 500;//这个设置不能丢,否者会成为canvas默认的300*150的大小
var ctx = canvas.getContext("2d");//2. 获取画布上下文
img.onload=function() {
  var w = img.width
  var h = img.height
  ctx.drawImage(img, 0, 0, w, h, 0, 0, w, h)
  var dataURL = canvas.toDataURL("image/png");
  console.log('裁切后',dataURL)
  saveFile(dataURL,'images.jpg');// 下载图片
}
  • 下载图片
var saveFile = function(data, filename){
  var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
  save_link.href = data;
  save_link.download = filename;

  var event = document.createEvent('MouseEvents');
  event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  save_link.dispatchEvent(event);
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容