返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript图片的Base64编码以及转换详解
  • 326
分享到

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

2024-04-02 19:04:59 326人浏览 安东尼
摘要

目录什么是 Base64图片的 Base64 编码图片转 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 存储展示,则是使用了Data URL 技术。

我们选择 Data URL 技术优势在于:

  • 减少 Http 请求;
  • 避免跨域问题;
  • 可像单独图片一样使用,也可以结合CSS Sprites(雪碧图)使用

Data URL:

Data URLs,即前缀为 data: 协议的 URL,其允许内容创建者向文档中嵌入小文件。

Data URLs 由四个部分组成:前缀 (data:)、指示数据类型的 MIME 类型、如果非文本则为可选的base64标记、数据本身:

data:[<mediatype>][;base64],<data>

图片转 Base64 的代码 

前端程序员来将图片转为 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 编码的数据体积通常是原数据的体积 4/3,也就是 Data URL 形式的图片会比二进制格式的图片体积大 1/3。
  • Data URL 形式的图片不会被浏览器缓存,通常编码内容会包含在CSS,js文件当中以此被浏览器缓存。
  • 网页加载图片虽然不用访问服务器了,但因为base64格式的内容太多,所以加载网页的速度会降低,可能会影响用户的体验。
  • base64格式的文本内容较多,存储在数据库中增大了数据库服务器的压力(点名一下把大图片转base64格式存到数据库的同学?)
  • 页面解析 CSS 生成的 CSSOM 时间增加。CSSOM 阶段阻止任何东西渲染,这意味着在 CSS 没处理好之前所有东西都不会展示,而如果CSS文件中混入了Base64,那么因为文件体积的大幅增长,解析时间会增长到十倍以上。

参考文章:

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

Base64 编码知识,一文打尽!

图片转换成base64格式的优缺点

总结

到此这篇关于javascript图片的Base64编码以及转换的文章就介绍到这了,更多相关JS图片Base64编码转换内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScript图片的Base64编码以及转换详解

本文链接: https://lsjlt.com/news/165392.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript图片的Base64编码以及转换详解
    目录什么是 Base64图片的 Base64 编码图片转 Base64 的代码 Base64 图片编码并不完美总结什么是 Base64 Base64 是网络中存储和传输的二...
    99+
    2024-04-02
  • 详解CSS玩转图片Base64编码
    目录什么是 base64 编码?  为什么要使用 Base64 编码?  CssSprites与Base64编码  更便捷的将图片转化为Base64编码  一些误区1. 使用...
    99+
    2024-04-02
  • PHP5.2怎么将图片转换为Base64编码
    这篇文章主要讲解了“PHP5.2怎么将图片转换为Base64编码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP5.2怎么将图片转换为Base64编码”吧!在开发网页时,我们经常需要嵌入...
    99+
    2023-07-06
  • Java中将base64编码字符串转换为图片的代码
    前一段时间,在做摄像头拍照上传,摄像头拍的照片为base64编码格式的字符串,需要上传至项目中,则需要使用到将base64编码字符串转换为图片 1、将base64编码字符串转换为图片...
    99+
    2023-03-19
    Java base64编码字符串转换为图片 Java base64转换图片 Java base64编码转换
  • 如何实现Data URI scheme以及实图片 base64 编码
    这篇文章将为大家详细讲解有关如何实现Data URI scheme以及实图片 base64 编码,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、 Data...
    99+
    2024-04-02
  • Java中怎么将base64编码字符串转换为图片
    本篇内容介绍了“Java中怎么将base64编码字符串转换为图片”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!将base64编码字符串转换为...
    99+
    2023-07-05
  • Java项目中如何将图片与base64 编码相互转换
    这期内容当中小编将会给大家带来有关Java项目中如何将图片与base64 编码相互转换,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。代码:public static boolean&n...
    99+
    2023-05-31
    java base64 相互
  • Base64字符串与图片的相互转换
    本篇博客记载的是一个我们在开发过程中很常用的一个小功能,就是我们在处理图片的时候做数据存放到数据库的功能,我们存放的不再是本地路径而是一个Base64的字符串! 然后我们在取值的时候又将Base64转换为一个图片文件的做法 简单的两个步骤:...
    99+
    2023-10-20
    java mybatis
  • Android中的图片如何转换成Base64格式
    前言: Android手机客户端的图片数据上传到服务器中保存,首先需要将客户端的图片转换成Base64格式,然后才能通过网络上传到服务器中。 有两种方法可以实现: 让客户端将图片上传到服务器,将图片的网络URL告诉服务器 将图片转成...
    99+
    2023-09-02
    服务器 运维 android java Powered by 金山文档
  • JS实现将图片URL转base64示例详解
    目录背景介绍出现意外进入正题吧nodejs中间层转总结背景介绍 最近有个需求是将部分DOM生成图片上传到服务器,这里就直接用之前项目使用的 html-to-image。 然而,这次...
    99+
    2023-05-13
    JS图片URL转base64 URL base64
  • 基于JavaScript编写一个图片转PDF转换器
    目录JavaScript 实现图片转 PDF第一步: PDF Converter的基本结构第二步: 图片预览框第 3 步: 图像到 PDF 转换器的按钮第 4 步: 在 JavaSc...
    99+
    2024-04-02
  • 如何将 Base64 编码的 p12 转换为 tls.Certificate
    有志者,事竟成!如果你在学习Golang,那么本文《如何将 Base64 编码的 p12 转换为 tls.Certificate》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想...
    99+
    2024-04-04
  • CSS中图片Base64编码的示例分析
    这篇文章主要介绍了CSS中图片Base64编码的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是 base64 编码  我不是来讲概念的,直接切入正题,图片的 b...
    99+
    2023-06-15
  • java使用hutool把服务器图片链接转为base64编码
    需求是把服务器的图片链接或者网上的图片链接地址转为base64位编码方便前端操作 建议使用方法一 base64编码转为图片在线网址 https://imgtobase64.d777.com/ 方法一:...
    99+
    2023-10-01
    java 开发语言 servlet
  • 关于JAVA11中图片与BASE64相互转换的实现
    由于jdk 1.8 之后sun.misc 包下的 BASE64Decode的依赖 被移除 我们需要在自己的项目中引入EncodeUtils 工具类 帮助我们进行转换 public...
    99+
    2024-04-02
  • JAVA11中图片与BASE64相互转换的实现方法
    这篇文章主要介绍了JAVA11中图片与BASE64相互转换的实现方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。常用的java框架有哪些1.SpringMVC,Spring...
    99+
    2023-06-14
  • Java Base64编码方法详解及实例分析
    Base64.encodeBase64String方法是一个Java语言中用于Base64编码的方法。它可以将二进制数据转换为Base64编码的字符串形式。在本文中,我们将详细解释这个方法的使用,提供完整的实例和代码,并分析运行结果。最后,...
    99+
    2023-09-04
    java 开发语言
  • jmeter添加自定义扩展函数之图片base64编码示例详解
    打开eclipse,新建maven工程,在pom中引入jmeter核心jar包: <!-- https://mvnrepository.com/artifact/org.apa...
    99+
    2024-04-02
  • python妙用之编码的转换详解
    前言 记得刚入门那个时候,自己处理编码转换问题往往是“百度:url解码、base64加密、hex……”,或者是使用一款叫做“小葵多功能转换工具”的软件,再后来直接上Burpsuite的decoder功能,感...
    99+
    2022-06-04
    妙用 详解 python
  • Vue结合ElementUI上传Base64编码后的图片实例
    目录ElementUI上传Base64编码后的图片安装ElementUI按需引入(当然如果需要你也可以全部引入)上传实现 ElementUI把上传的图片转为Base64El...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作