图像转Base64编码

使用我们的图像转Base64编码工具将图像输入转换为Base64字符串,方便数据传输和存储。

2 个评分中的 5 个
允许.gif, .png, .jpg, .jpeg, .svg 64 MB 最大。
图像转Base64编码

图像转Base64编码是一款免费工具,可将图像文件转换为 Base64 编码的文本字符串。

什么是 Base64,为什么要使用它?

对于上传的图像,Base64 会将二进制数据编码为文本,使图像数据能够通过主要为文本设计的系统传输。它把源数据中的每三个字节表示为四个取自特定字符集的可打印字符。

当某种格式无法携带独立的二进制文件时,这种编码方式很有用。你可以把图像放入数据 URL、JSON 属性或 MIME 邮件部分,而不必以常规二进制形式附加原始字节。生成的 Base64 字符串只是经过编码,并未加密。任何获得该字符串的人都能将其解码,因此它无法提供保密性或访问控制。

下面用一个很短的文本字节示例说明其工作方式。

  • 输入文本为 <svg></svg>
  • Base64 输出为 PHN2Zz48L3N2Zz4=

大多数图像包含的是二进制字节,而非可读的标记文本,因此实际输入不会像上面的文本示例一样。PNG、JPEG、GIF、WebP 和其他图像格式采用的原理相同。

示意图:文本经由 图像转Base64编码 双向转换

如何把图像转换为 Base64?

将图像输入工具,运行转换,然后复制 Base64 encoded 字段中返回的值。该工具会对图像数据使用 PHP 的 base64_encode 函数。

  1. 选择需要转换为文本形式的图像。
  2. 等待页面处理文件并返回编码结果。
  3. 复制完整字符串,包括末尾的所有等号。
  4. 如果目标系统要求数据 URL、JSON 值或其他容器格式,请添加相应的外层语法。
digily.link 上的 图像转Base64编码 工具及其输入表单

转换在服务器上完成。你的图像会通过 HTTPS 发送到服务器,但不会被存储。由于处理发生在服务器端,请不要认为转换期间文件只保留在你的设备上。

生成的 Base64 字符串该怎么用?

你可以直接使用原始 Base64 字符串,也可以把它放入接收系统要求的语法结构中。Base64 本身不会标明图像格式、文件名、尺寸或用途。

在 HTML 或 CSS 数据 URL 中,编码值前通常要加上媒体类型和 Base64 标记。PNG 数据 URL 以 data:image/png;base64, 开头,后面紧接编码字符串。JPEG 使用 image/jpeg,SVG 则通常使用 image/svg+xml。媒体类型选错后,即使图像数据本身有效,软件也可能无法显示。

在 JSON 中,Base64 通常以带引号的字符串保存,并经常搭配一个单独字段来标明媒体类型。如果 API 明确要求原始 Base64,就不要添加数据 URL 前缀。使用工具返回的值前,请先阅读 API 文档,因为这两种输入格式不能互换。

实际系统中哪些地方会用到 Base64?

当二进制数据需要通过基于文本的格式或协议传输时,经常会遇到 Base64。常见场景包括:

  • 嵌入 HTML、CSS 或生成文档中的 数据 URL。
  • 发送给 API 的 JSON 载荷,图像内容存放在文本属性中。
  • 电子邮件,MIME 可以用 Base64 编码附件和内嵌图像。
  • 查询字符串,但标准 Base64 字符可能还需要进行 URL 编码。
  • 无法直接包含任意二进制字节的配置文件和 XML 文档。

国际化域名也是将数据转换为受限字符集的例子,不过它使用的是 Punycode,而不是 Base64。如果要把值放入 URL,可能还需要使用 URL编码工具,因为标准 Base64 可以包含加号、斜杠和等号。

为什么 Base64 解码失败,或者解码后是乱码?

输入中包含复制过来的前缀、内容受损或被截断,或者使用的 Base64 格式与解码器预期不符,都可能导致解码失败。出现乱码通常意味着解码结果其实是有效的二进制图像数据,却被错误地当作普通文本显示。

  • 复制过来的前缀:如果解码器只接受原始 Base64,前缀可能导致解码失败。使用这类解码器前,请删除 data:image/png;base64, 之类的文本。
  • 受损或被截断的输入:可能会解码出不完整的图像,导致查看器无法打开。
  • 重复编码:第一次解码后得到的仍是另一个 Base64 字符串。如果来源对已经编码的值又编码了一次,就可能需要再次解码。
  • 字符集不匹配:如果解码器要求另一种变体,可能会引发错误。标准 Base64 使用加号和斜杠,而 Base64url 在相应位置使用连字符和下划线。
  • 缺少填充字符:可能会影响严格的解码器。标准 Base64 末尾可能有一个或两个等号,不过有些系统会特意省略它们。

如果解码结果是二进制数据,请使用正确的图像类型保存,不要在文本编辑器中打开。只要字符串完整且格式符合要求,就可以使用 Base64解码工具或 Base64解码为图片完成反向转换。

格式选择和棘手的输入

标准 Base64 适用于电子邮件、数据 URL,以及明确要求该格式的系统。对于 URL 路径、查询参数和令牌,请使用接收系统指定的变体。如果相关规范要求使用 Base64url,它可能更合适。本工具使用 PHP 的标准 base64_encode 操作,因此不要把输出结果默认当成 Base64url。

该工具编码的是上传图像的字节。SVG 内容或图像元数据中的空格、标点、数字、带重音字符和非拉丁文字,都会作为这些字节的一部分被编码。包含此类字符的文件名独立于文件内容,Base64 本身并不会表示文件名。

在 PHP 中,如果输入是空字节序列,base64_encode 会返回空值。文件越长,生成的字符串也越长。还未计入外层 JSON 或数据 URL 语法时,Base64 通常就会让原始字节数增加约三分之一。它不会压缩图像、提高画质,也不会改变图像的像素尺寸。

常见问题

可以直接在 CSS 中使用 Base64 图像吗?

可以。能够接受图像 URL 的 CSS 属性可以使用格式正确的数据 URL。这种方式很适合体积小且独立的资源,但嵌入较大的图像会增加样式表大小,而且图像无法与 CSS 文件分开缓存。

为什么我的 Base64 字符串里有换行?

本工具返回的是无换行的连续值,因为 PHP 的 base64_encode 不会插入换行。换行是在后续复制或其他处理过程中产生的。许多解码器会忽略空白字符,但严格的 API 可能会拒绝包含空白的内容。因此,如果接收方规范有要求,请使用无换行的连续字符串。

修改图像文件名会改变 Base64 值吗?

不会。Base64 表示的是文件字节,而不是文件名。因此,只给未修改的文件重命名不会改变其编码结果。但编辑元数据、重新保存图像或转换图像格式都会改变字节,从而生成不同的字符串。

Base64 能保护私密图像吗?

不能。Base64 无需密码或密钥即可还原。对于机密内容,请采用适当的加密、身份验证和访问控制措施。同时请记住,本工具会通过 HTTPS 将图像发送到服务器进行处理。

怎么确认转换成功了?

解码完整字符串,然后使用支持原始格式的图像查看器打开结果。检查图像尺寸和可见内容是否与源文件一致,并保留末尾的填充字符,除非目标系统明确要求将其删除。

类似工具

Base64解码为图片

使用我们的Base64解码工具将Base64输入解码为图像,实现图像数据还原。

4,637
19

热门工具