一、canvas是什么
Canvas是一個HTML5標簽,可以用來繪制圖形、動畫、甚至是視頻。使用Canvas,你可以基于用戶的事件動態地生成圖像,例如游戲或數據可視化,也可以將其用作簡單的圖像編輯器或者成為一個復雜應用的重要組件。
在Canvas中,繪制是由Javascript覆蓋到特定區域中的基礎圖形初始化而完成的。每一個Canvas元素有一個2D渲染內容區域。這里可以通過Javascript來繪制圖像。
二、base64是什么
Base64是網絡上最常見的用于傳輸8Bit字節碼的編碼方式之一,大家實際上可以將Base64理解為一種編碼格式、而非加密算法。Base64編碼將3個字節的二進制數據編碼成4個字節的文本數據,長度增加33%。
Base64常用于在HTTP協議下傳輸HTTP認證信息,因為一些特殊字符沒有被HTTP協議允許直接傳輸,所以進行Base64編碼。
三、canvasbase64的基本原理
Canvas中我們可以使用toDataURL()方法將Canvas圖像轉換為一個base64圖片。toDataURL()方法返回的是Canvas元素的一個數據地址。該地址包含了Canvas圖像的基本信息,標志了該圖像類型、尺寸等內容,并且以base64的形式顯示了Canvas圖像的具體內容。
使用Canvas+base64的組合,我們可以輕松地將Canvas圖像轉換為base64圖片,并按需傳輸或者展示。
四、canvasbase64的特點與用途
Canvasbase64具有以下幾個特點:
1、base64編碼后的圖片可以嵌入HTML或者CSS文件中,實現無縫展示。
2、base64編碼后的圖片不需要額外的下載,節省了圖片下載的網絡開銷。
3、base64編碼后的圖片可以直接使用Javascript加載,實現異步加載。
Canvasbase64主要應用于以下場景:
1、生成二維碼。
let canvas = document.createElement("canvas");
let context = canvas.getContext("2d");
canvas.width = 200;
canvas.height = 200;
QRCode.toCanvas(canvas, "Hello World", function (error) {
if (error) console.error(error);
});
let imgData = canvas.toDataURL("image/png");
2、繪制海報。
let img = new Image();
img.crossOrigin = "";
img.src = "http://www.dietsnews.net/2023/1123/1700715002105.png";
img.onload = function () {
let canvas = document.createElement("canvas");
let context = canvas.getContext("2d");
canvas.width = img.width;
canvas.height = img.height;
context.drawImage(img, 0, 0);
context.font = "18px Arial";
context.fillText("Example", 10, 50);
let imgData = canvas.toDataURL("image/png");
};
3、實現手寫板。
let canvas = document.getElementById("canvas");
let context = canvas.getContext("2d");
context.strokeStyle = "black";
context.lineWidth = 5;
let drawing = false;
canvas.addEventListener("mousedown", function (event) {
drawing = true;
context.beginPath();
context.moveTo(
event.pageX - canvas.offsetLeft,
event.pageY - canvas.offsetTop
);
});
canvas.addEventListener("mousemove", function (event) {
if (!drawing) return;
context.lineTo(
event.pageX - canvas.offsetLeft,
event.pageY - canvas.offsetTop
);
context.stroke();
});
canvas.addEventListener("mouseup", function (event) {
drawing = false;
});
五、canvasbase64的示例代碼
下面我們來看一個完整的Canvasbase64實現過程的示例代碼:
// HTML
// JavaScript
let canvas = document.getElementById("canvas");
let context = canvas.getContext("2d");
context.fillStyle = "#fff";
context.fillRect(0, 0, canvas.width, canvas.height);
context.font = "30px Arial";
context.fillStyle = "#000";
context.fillText("Hello World", 50, 100);
let imgData = canvas.toDataURL("image/png");
let imgElement = document.createElement("img");
imgElement.src = imgData;
document.body.appendChild(imgElement);