gpt4 book ai didi

java - 使用 parseBase64Binary 解码图像

转载 作者:行者123 更新时间:2023-12-01 15:22:51 27 4
gpt4 key购买 nike

我想从以 64 为基数编码的字符串中获取图像。

我正在使用这个方法:

String image = ABAfXWQAQH11kAEB9dZABAfXWQAQH11kAEB9dZABAfXW ...

public void change(){
byte [] image = DatatypeConverter.parseBase64Binary(image);
System.out.println(image+" bytes");
InputStream in = new ByteArrayInputStream(imagen);
System.out.println(in+" inStream");
BufferedImage finalImage= ImageIO.read(in);
System.out.println(finalImage+" buffer");
}

使用它我获得了这个输出

[B@ca2dce bytes
java.io.ByteArrayInputStream@18558d2 inStream
null buffer
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at MyCLass.change(MyClass.java:48)
at MyClass.<init>(MyClass.java:26)
at MyClass.main(MyClass.java:59)

为什么 bufferedImage 为空?

最佳答案

来自the documentation :

If no registered ImageReader claims to be able to read the resulting stream, null is returned.

所以我的猜测是没有注册的 ImageReader 声称能够读取它......

假设您的InputStream代码没有问题中的拼写错误(imagen而不是image),剩下三个我可以轻松想到的选项:

  • 您的图像数据一开始就已损坏
  • 您已将其错误地编码为 Base64
  • DatatypeConverter.parseBase64 不太适合您所拥有的 base64 格式。 (这不是我以前使用过的转换器。base64 有很多选项 - 例如 this public domain one )
  • 数据到达 ImageIO.read 时一切正常,但它不是受支持的图像格式。

您应该弄清楚属于哪种情况 - 特别是,如果完全跳过 Base64 编码会发生什么?或者如果将经过 Base64 编码然后解码的数据与原始数据进行比较会发生什么? (至少是相同的长度吗?)如果你将base64解码的数据写到一个文件中,你可以在你最喜欢的图像程序中打开它吗?

关于java - 使用 parseBase64Binary 解码图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10626870/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com