,,JavaScript图片的Base64编码以及转换详解

,,JavaScript图片的Base64编码以及转换详解

如今,为了提高用户的浏览体验,网站中使用的图片越来越多,这些图片通常以Base64的形式存储和加载。下面这篇文章主要介绍JavaScript图片的Base64编码和转换的相关信息,有需要的可以参考一下。

目录

Base64图片的Base64编码是什么?Base64图片的代码不是一个完美的总结。

什么是 Base64

Base64是网络中存储和传输的二进制数据的常见用法。Base64的一个字节只能表示64种情况,编码格式每个字节的前两位只能是0,剩下的6位用来表示内容。

Base64首先应用于邮件传输协议。当时的邮件传输协议只支持ASCII字符传输,用ASCII码表示所有英文字符。但是如果要传输文件中的图片、视频等资源,这些资源转换成ASCII码时会出现非英文数字。而且邮件里有很多控制字符,会变成隐形字符。而且非英文字符和控制字符在传输过程中容易出错,会影响邮件的正确传输。为此,一种新的编码规则诞生了:

二进制按3个字节分组,然后每组的3个字节(24位)转换成4个6位,每6位根据查找表对应一个ASCII符号。

图片的 Base64 编码

我们都知道图片通常以img标签的形式在网页中使用,img标签的src属性会指定一个远程服务器上的资源。在网页加载到浏览器中时,浏览器会针对每个外部资源都向服务器发送一次拉取资源请求。但是这是非常占用网络资源的。,而我们常说的Base64存储显示使用了数据URL技术。

选择数据URL技术的优点是:

减少HTTP请求;避免跨域问题;它可以作为一个单独的图片或与CSS精灵结合使用。

Data URL:

Data URLs,即以data: protocol为前缀的URL,允许内容创建者在文档中嵌入小文件。

数据URL由四部分组成:前缀(数据:)、指示数据类型的MIME类型、可选的base64标记(如果不是文本)、数据本身:

数据:[media type][;base64],数据

图片转 Base64 的代码

前端程序员把图片变成Base64代码的场景还是很多的,网上搜索的很多方法都用不上。下面给大家介绍两个绝对好用的~

Promise 实现

/**

* @param url图像路径

*/

导出函数getUrlBase64(url) {

返回新承诺((解决,拒绝)={

let canvas=document . createelement(' canvas ');

const CTX=canvas . get context(' 2d ');

设img=new Image();

img.crossOrigin=' Anonymous//解决Canvas.toDataURL图片的跨域问题

img.src=url

img.onload=function () {

canvas . height=img . height;

画布.宽度=img .宽度;

ctx.drawImage(img,0,0,img.width,img . height);//参数可以自定义

const data URL=canvas . toda taurl(' image/JPEG ',1);//获取Base64编码

resolve(dataURL);

canvas=null//清除画布元素

img=null//清除img元素

};

img.onerror=function () {

拒绝(新错误('无法在' url '加载图像));

};

});

}

回调函数实现

/**

* @param url图像路径

* @param回调结果回调

*/

导出函数getUrlBase64Callback(url,callback) {

let canvas=document . createelement(' canvas ');//创建画布DOM元素

const CTX=canvas . get context(' 2d ');

const img=new Image();

img.crossOrigin=' Anonymous

img.src=url

img.onload=function () {

canvas . height=img . height;

画布.宽度=img .宽度;

ctx.drawImage(img,0,0,img.width,img . height);

const data URL=canvas . toda taurl(' image/JPEG ',1);//可以选择多种模式。

callback.call(this,dataURL);//返回函数以获取Base64编码

canvas=null

};

}

Base64 图片编码并不完美

我不是故意找茬的。

Base64编码的数据量通常是原始数据的4/3,即数据URL形式的图像会比二进制格式的图像大1/3。URL形式的图片不会被浏览器缓存,通常编码后的内容会包含在CSS和JS文件中被浏览器缓存。虽然加载网页图片不需要访问服务器,但是由于base64格式的内容太多,加载网页的速度会降低,可能会影响用户体验。base64格式的文本很多,存储在数据库中增加了数据库服务器的压力(说出在数据库中保存base64格式大图的同学),页面解析生成CSSOM的时间增加。CSSOM stage阻止任何东西被呈现,这意味着在CSS被处理之前,任何东西都不会被显示。如果在CSS文件中混入Base64,由于文件大小的大幅增加,解析时间会增加到十倍以上。

参考文章:

【前端攻略】:玩图片的Base64编码

Base64编码知识,每篇文章!

将图片转换为base64格式的优点和缺点

总结

关于JavaScript图像的Base64编码和转换的文章到此结束。有关JS图像转换的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: