【问题标题】:JSON Binary Array to Image in JavaJSON二进制数组到Java中的图像
【发布时间】:2011-06-21 02:17:41
【问题描述】:

我正在使用一个输出字节数组的 .NET json 服务。字节数组被转换为每个字节的整数表示。在 Fiddler 中查看时,如下所示:

{"imageBackground":[137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,...]}

在 Java 中,我将数据返回到 JSONObject 中,但我对 Java 不熟悉,所以我不确定从这里到哪里将其转换为可用的东西。我怀疑如果我可以将它重新放入某种流中,我应该能够将其作为图像(PNG/JPG/等)查看......

这里有任何提示吗?

【问题讨论】:

  • 我对有人一开始就以这种方式发送图像的想法感到有些不安。 (Base64 数据的 JSON 字符串会更好。)

标签: java json c#-4.0


【解决方案1】:

获取imageBackground作为字节数组,然后交给ImageIO

byte[] imageBackground = // set me here;
ByteArrayInputStream input = new ByteArrayInputStream(imageBackground);
try {
    BufferedImage ImageIO.read(input);
    // do fun stuff with the image...
}
finally {
    input.close();
}

我不确定您的应用程序想要作为图像做什么,但是一旦您有了BufferedImage,您就可以使用ImageIO 将其转换为另一种类型,您可以进行转换、输出到文件.. .天空是极限。您可以通过 Google 搜索找到相关教程和更多内容。

【讨论】:

  • @Andrew Heh heh...我知道这种感觉。
  • 是否有任何 java 函数可用于帮助将整数字符串返回到 byte[]?
  • 当然...String.getBytes()。有两个签名...一个以默认字符编码 (UTF-16) 返回,另一个您可以指定编码。
【解决方案2】:

类似这样的东西(方法名称可能不正确,从我的脑海中不知道它们)

JSONArray jBytes = theObject.getArray("imageBackground");
byte[] imData = new byte[jBytes.size()];
for (int i = 0; i < jBytes.size(); i++) {
   imData[i] = jBytes.get(i);
}

这就是你如何使它成为一个真正的字节数组。然后做 stevevls 发布的内容,或任何你想做的事情。

【讨论】:

    猜你喜欢
    • 2014-01-29
    • 2018-11-02
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    相关资源
    最近更新 更多