千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > canvasbase64详解

canvasbase64详解

来源:千锋教育
发布人:xqq
时间: 2023-11-23 12:50:04 1700715004

一、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.mobiletrain.org/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);

tags: canvasbase64
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT