Javascript Is数据:图像/png;base64 img标记的唯一base64编码?

Javascript Is数据:图像/png;base64 img标记的唯一base64编码?,javascript,android,image,base64,png,Javascript,Android,Image,Base64,Png,一直在用Java处理web上编码为base64字符串的图像。我只在img src标签中看到image/png格式,即data:image/png;base64,{eNc0d3d_St!ng…}我没有看到image/gif或image/jpg。我已经看了一些关于Base64编码的文章 此外,我去掉了数据:image/png;base64执行以下操作时使用Java(Android)部分 Base64.decode(src,Base64.DEFAULT)因此在这种情况下似乎不需要png。事实上,如果我

一直在用Java处理web上编码为base64字符串的图像。我只在img src标签中看到image/png格式,即
data:image/png;base64,{eNc0d3d_St!ng…}
我没有看到image/gif或image/jpg。我已经看了一些关于Base64编码的文章

此外,我去掉了
数据:image/png;base64执行以下操作时使用Java(Android)部分
Base64.decode(src,Base64.DEFAULT)
因此在这种情况下似乎不需要png。事实上,如果我不去掉这个“头”,那么
BitmapFactory.decodeByteArray
返回null


所以问题是,除了png之外,还有其他格式用于网络上的图像编码吗?

是的:

数据:图像/gif

资料:image/jpg

等等

不仅仅是图像:

数据:text/html

格式如下

data:[<media type>][;charset=<character set>][;base64],<data>
数据:[;字符集=][;base64],
在这里


否,您可以使用
gif
jpg
或浏览器读取的任何类型的图像。例如:

异步/等待版本

const axios=require(“axios”);
const response=等待axios.get(“https://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/Los_Colorines_4.jpg/320px-Los_Colorines_4.jpg", {
响应类型:“arraybuffer”
});
const base64=Buffer.from(response.data,'base64').toString('base64');
const base64ImageUrl=`data:image/gif;base64,${base64}`

演示:

作为一个单独的问题,这可能是最好的,但是:如果我将上面代码中的image/png更改为image/gif,我会得到相同的图像。我希望得到一个可能损坏的图像,但似乎至少FF呈现的是相同的,不管图像类型是什么declaredRight,一旦FF看到数据流是一个图像,它会查看“幻数”以确定它是哪种图像类型。大多数图像(或其他二进制)文件格式,如PNG、GIF或JPEG,都包含一个(“幻数”)文件开头的标识符,唯一标识格式。在这种情况下,
image/png
部分是冗余的,但对于可以使用数据URI方案表示的所有可能格式,情况可能并非如此。所以它确实有目的。另外,请记住,
;base64
第一部分可选,不要盲目地将数据发送到base64解码器。感谢您的评论,这回答了我在该主题上的一些相关问题。并生成一些新的