目录什么是 Base64图片的 Base64 编码图片转 Base64 的代码 Base64 图片编码并不完美总结什么是 Base64 Base64 是网络中存储和传输的二
Base64 是网络中存储和传输的二进制数据的普遍用法。Base64 一个字节只能表示 64 种情况,且编码格式每个字节的前两位都只能是 0,使用剩下的 6 位表示内容。
Base64 最早是应用在邮件传输协议中的。当时邮件传输协议只支持 ASCII 字符传递,使用 ASCII 码来表示所有的英文字符。但是如果要在文件中传输图片、视频等资源的话,这些资源转成 ASCII 的时候会出现非英文数字的情况。而且邮件中还存在很多控制字符,这些控制字符又会成为不可见字符。而且,非英文字符和控制字符在传输过程中很容易产生错误,影响邮件的正确传输。为此才有了诞生了一个新的编码规则:
把二进制以 3 个字节为一组,再把每组的 3 个字节(24 位)转换成 4 个 6 位,每 6 位根据查表对应一个 ASCII 符号。
我们都知道图片在网页中的使用方法通常是使用 img 标签的形式,而 img 标签的 src 属性会指定一个远程服务器上的资源。在网页加载到浏览器中时,浏览器会针对每个外部资源都向服务器发送一次拉取资源请求。但是这是非常占用网络资源的。 而我们经常所说的 Base64 存储展示,则是使用了Data URL 技术。
我们选择 Data URL 技术优势在于:
Data URL:
Data URLs,即前缀为
data:
协议的 URL,其允许内容创建者向文档中嵌入小文件。Data URLs 由四个部分组成:前缀 (
data:
)、指示数据类型的 MIME 类型、如果非文本则为可选的base64
标记、数据本身:data:[<mediatype>][;base64],<data>
由前端程序员来将图片转为 Base64 编码的场景还是非常多的,而且网上搜索的方法好多都没法用?,这边给大家两个绝对可以用的哈~
Promise 实现
export function getUrlBase64(url) {
return new Promise((resolve, reject) => {
let canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
let img = new Image();
img.crossOrigin = "Anonymous"; //解决Canvas.toDataURL 图片跨域问题
img.src = url;
img.onload = function () {
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img, 0, 0, img.width, img.height); //参数可自定义
const dataURL = canvas.toDataURL("image/jpeg", 1); //获取Base64编码
resolve(dataURL);
canvas = null; //清除canvas元素
img = null; //清除img元素
};
img.onerror = function () {
reject(new Error("Could not load image at " + url));
};
});
}
回调函数实现
export function getUrlBase64Callback(url, callback) {
let canvas = document.createElement("canvas"); //创建canvas DOM元素
const ctx = canvas.getContext("2d");
const img = new Image();
img.crossOrigin = "Anonymous";
img.src = url;
img.onload = function () {
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img, 0, 0, img.width, img.height);
const dataURL = canvas.toDataURL("image/jpeg", 1); //可选取多种模式
callback.call(this, dataURL); //回掉函数获取Base64编码
canvas = null;
};
}
我不是故意找茬
参考文章:
【前端攻略】:玩转图片Base64编码
Base64 编码知识,一文打尽!
图片转换成base64格式的优缺点
到此这篇关于javascript图片的Base64编码以及转换的文章就介绍到这了,更多相关JS图片Base64编码转换内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: JavaScript图片的Base64编码以及转换详解
本文链接: https://lsjlt.com/news/165392.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-01-12
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0