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';
  // 設(shè)置 a href 屬性
  a.setAttribute("href", canvas.toDataURL());
  // 觸發(fā) a 點(diǎn)擊事件
  a.click();
});

如果需下載圖片范圍中存在從服務(wù)器獲取到的圖片,則需要把圖片轉(zhuǎn)換成base64格式才可以下載,不然下載的圖片會出現(xiàn)空白
圖片轉(zhuǎn)base64

// 圖片下載
var image = new Image();
// 如果圖片是跨域的,填上"*"或者"anonymous" 核心是請求頭中包含了 Origin: "anonymous"或"*" 字段,
//響應(yīng)頭中就會附加上 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;
};
// 圖片轉(zhuǎn) 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;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,644評論 1 32
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,804評論 1 45
  • A模塊指導(dǎo)師需要讀的書 1、《道德經(jīng)》(總部有售) 2、《辯證唯物主義》(總部有售) 3、《形式邏輯學(xué)》(總部有售...
    喜歡空谷幽蘭閱讀 216評論 0 0
  • 今天也挺累,因?yàn)樽蛲頂]串喝啤酒,和樂嘉聊天到一點(diǎn)半才睡。今早就很舒服地睡到10點(diǎn),剛好沒遲到英語課。下午翹了數(shù)值,...
    樂觀的自卑者閱讀 103評論 0 0

友情鏈接更多精彩內(nèi)容