如何解码base64 fbx嵌入图像

Posted

技术标签:

【中文标题】如何解码base64 fbx嵌入图像【英文标题】:How to decode base64 fbx embedded images 【发布时间】:2019-08-30 11:44:58 【问题描述】:

我有一个嵌入图像内容的 FBX。 图片是 Base64 格式的。我读取了该块并成功解码。 当图像更大时,问题就来了。 FBX 将图像分成两行,看起来像 base64,但我不知道应该如何解码它。

    我尝试在解压缩 png 之前以 base64 解码这两行并将它们连接起来,但 png 已损坏。 我尝试连接 Base64 字符串,但它不起作用,因为结尾 = trail 以这种方式是错误的。 我尝试先解压缩第一行(正确的 png,但只有图像的一半),然后将第二行解压缩为位图,但由于第二行没有标题,所以图像无效。

内容:, "iVBORw0KGgoAAAANSUhEUg...AAAAA=", "AAAAAAAAAAAAAAAAAA...AD//wEAAP///noceab5flIAAAAAAASUVORK5CYII="

如您所见,第一行是 PNG 标头 (iVBOR...),但第二行没有标头。第一行和第二行以base64结尾,所以我怀疑它们应该分别解码。

有人知道怎么做吗?

如何复制:打开 3ds max 创建一个平面,将图像应用为纹理,保存为带有嵌入媒体的 ascii FBX。

【问题讨论】:

你能举一个这样的PNG图像的例子吗 好的,我会编辑.. 【参考方案1】:

我下载并安装了最新版本的 3ds max。我创建了一个平面并添加了一个 PNG 图像作为纹理,我使用嵌入式媒体将其导出为(默认版本)ascii 格式的 fbx 文件。

我看到了多行 base64 编码的 ascii。第一行包含一个 PNG 标头,我的解码器将其识别为 PNG 文件。后续行不包含 PNG 标头,并被解码为 BIN 文件。这一切都和你描述的一模一样。

但是,在我的例子中,正如您所期望的那样,只需连接解码的片段即可正确地重新生成原始 PNG 文件。

我使用this 站点对所有单独的块进行解码,并在连接它们之前将它们下载为二进制文件。

我使用开源二进制编辑器HexEdit 来检查块并将它们连接起来。

由于此过程按预期工作,我推测您的 Base64 解码或串联一定有问题。您是否编写了自己的解码程序?如果是这样,也许您忘记丢弃与填充字符相对应的任何字节(终端=== 用于使每行的最终字节数可被三整除)。请注意,这些字节必须在解码后丢弃,而不是之前。几乎所有的解码库都在无形中为您做到这一点。

如果这不能解决您的问题,请发布您正在使用的 PNG 文件、输出的第一行和第二行的完整 Base64,以及您用于解码和连接它们的例程。如果您这样做,我们会更仔细地查看以帮助您解决问题。

【讨论】:

嗨!您的帮助有助于发现我的 base64 解码例程实际上由于填充错误而丢失了最后一个字节。然后,在连接之后,它被破坏了。我用这里的***.com/questions/180947/base64-decode-snippet-in-c 改变了我的日常工作,并像一个魅力一样工作。非常感谢。

以上是关于如何解码base64 fbx嵌入图像的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中将 Base64 字节数组解码为图像

如何使用 javamail 将 base64 图像嵌入到电子邮件中

如何在 React Js 中显示 base64 图像?

Python 对图像进行base64编码及解码读取为numpyopencvmatplot需要的格式

在python中将base64编码的图像解码为原始图像

在Grails中解码base64图像[重复]