html2canvas:將html的dom變成圖片,並儲存
如何將HTML頁面儲存為圖片?
- 將DOM改寫為canvas,然後利用canvas的toDataURL方法實現將DOM輸出為包含圖片展示的data url。
- 使用HtmlCanvas2實現
話不多說,直接上程式碼.......
1.npm下載 和html2canvas:
npm install html2canvas
2.引入 html2canvas:
import html2canvas from 'html2canvas'
3.呼叫方法
基於html2canvas.js可將一個元素渲染為canvas,只需要簡單的呼叫html2canvas(element[, options]);即可。下列html2canvas方法會返回一個包含有<canvas>元素的promise:
html2canvas(document.body).then(function(canvas) {
document.body.appendChild(canvas);
});
此時就將想要轉化的dom元素轉成了canvas形式,但是可能輸出效果並不如意,所以這裡還可以加限制條件,就是html2canvas的第二個引數,此外通過Canvas2Image的convertToImage方法,將canvas轉化為img,
注⚠️ 這裡返回的 img,是一個 dom ,所以可以加入到其他的dom裡,如果需要圖片的base64,則是 img.src。
var opts = {
scale: scale,
canvas: canvas,
logging: true,
width: width,
height: height,
backgroundcolor: '#FFFFFF',
useCORS: true // 用於解決圖片跨域
};
html2canvas(shareContent, opts).then(function (canvas) {
var context = canvas.getContext('2d');
var img = Canvas2Image.convertToImage(canvas, canvas.width, canvas.height);
document.body.appendChild(img);
$(img).css({
"width": canvas.width / 2 + "px",
"height": canvas.height / 2 + "px",
})
});
這裡就得到了由dom節點轉化的海報了,然後就是儲存這個圖片。這裡直接附上兩個函式,直接呼叫即可。
/**
* @description: 下載圖片
* @param {string} url 圖片資訊,這裡是base64
* @param {string} name 圖片的名字
*/
downloadByBlob(url, name) {
let image = new Image();
image.setAttribute("crossOrigin", "anonymous");
image.src = url;
image.onload = () => {
let canvas = document.createElement("canvas");
canvas.width = image.width;
canvas.height = image.height;
let ctx = canvas.getContext("2d");
ctx.drawImage(image, 0, 0, image.width, image.height);
canvas.toBlob((blob) => {
let url = URL.createObjectURL(blob);
this.download(url, name);
// 用完釋放URL物件
URL.revokeObjectURL(url);
});
};
},
/**
* @description: 下載圖片
* @param {string} url 圖片資訊,這裡是base64
* @param {string} name 圖片的名字
*/
download(href, name) {
let eleLink = document.createElement('a')
eleLink.download = name
eleLink.href = href
eleLink.click()
eleLink.remove()
}
總結:親身實驗的效果,確實能夠達到目的,但是下載圖片清晰度不夠,展示效果不太好,如果想達到清晰度,可以降低canvas抗鋸齒,詳細說明看如下連結:
相關文章
- html2canvas擷取圖片並下載HTMLCanvas
- 對html進行截圖並儲存為本地圖片HTML地圖
- 將echarts生成的圖表變為圖片儲存起來Echarts
- 在vue專案中基於html2canvas實現網頁儲存為圖片VueHTMLCanvas網頁
- html2canvas將指定區域匯出為圖片(js將div匯出為圖片)HTMLCanvasJS
- html2canvas 如何生成高清圖片HTMLCanvas
- 使用JavaScript將當前頁面儲存成PDF,支援圖片和文字的儲存JavaScript
- C# 截圖並儲存為圖片C#
- html2canvas生成圖片顯示不全HTMLCanvas
- 生成二維碼,並且儲存,指定位置的view成圖片,並且儲存到本地相簿View
- 儲存圖片
- Python opencv 將一張圖片任意 N 等分並儲存_opencv 等分影像PythonOpenCV
- uni-app 中使用 html2canvas 生成圖片APPHTMLCanvas
- MATLAB將figure視窗儲存為圖片Matlab
- Html2canvas——圖片空白的幾種排查解決方案HTMLCanvas
- 使用html2canvas將頁面轉成圖,用canvas2image下載HTMLCanvas
- Excel 讀取圖片並獲取儲存路徑Excel
- html canvas 圖片壓縮後 透明背景變成黑色HTMLCanvas
- 使用Java將圖片生成sequence file並儲存到HBaseJava
- Win10把預設圖片儲存格式變成“jfif”了,怎麼變回“JPG”格式?Win10
- iOS開發-新建相簿並儲存圖片到該相簿iOS
- 儲存圖片到SD卡SD卡
- asp.net儲存圖片ASP.NET
- .Net之使用Jquery Ajax通過FormData物件非同步提交圖片檔案到服務端儲存並返回儲存的圖片路徑jQueryORM物件非同步服務端
- vue+element 將圖片壓縮並轉換成base64上傳圖片Vue
- Android:MediaCodeC硬編碼解碼視訊,並將視訊幀儲存為圖片檔案Android
- Acrobat怎麼批次儲存PDF小圖片?adobe Acrobat一鍵儲存pdf小圖片的技巧BAT
- Acrobat怎麼批量儲存PDF小圖片?adobe Acrobat一鍵儲存pdf小圖片的技巧BAT
- jmeter使用問題——將介面返回變數儲存成csv檔案JMeter變數
- 教你如何儲存抖音店鋪的商品圖片,自動儲存主圖、詳情圖
- 【轉】mysql儲存圖片技術決定:儲存二進位制檔案還是隻儲存圖片相對路徑,圖片放在硬碟上面?MySql硬碟
- js實現canvas儲存圖片為png格式並下載到本地JSCanvas
- 移動端長按儲存、取消長按儲存圖片
- 使用 HTML 實現截圖-html2canvas使用記錄HTMLCanvas
- java+pgsql實現儲存圖片到資料庫,以及讀取資料庫儲存的圖片JavaSQL資料庫
- android圖片處理,讓圖片變成圓形Android
- 直播軟體原始碼,在vue中使用html2canvas在前端生成圖片原始碼VueHTMLCanvas前端
- matlab呼叫攝像頭並儲存成幀的形式Matlab