将Base64转换为png格式的图像文件而不保存文件。可能

时间:2015-02-01 06:35:31

标签: java

我使用Apache httpclient来调用REST Web服务。此服务以base64格式返回图像。我想将其转换为png格式的图像,但我不想保存此图像文件。原因是有超过10000个用户,如果我继续保存所有图像,它将消耗大量内存。

我正在使用JDK 1.7

有可能实现这个目标吗?

2 个答案:

答案 0 :(得分:0)

创建一个任何格式的BufferedImage实例,假设ImageIO支持...我猜这是来自磁盘 - 你在问题中没有说过

    BufferedImage original = ImageIO.read(new FileInputStream("test.png"));

将PNG写入ByteArrayOutputStream

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ImageIO.write(original, "png", outputStream);

将结果字节数组转换回base64。

String output = DatatypeConverter.printBase64Binary(outputStream.toByteArray());
System.out.println(output);

答案 1 :(得分:0)

不应该很难 - 您可以使用基于内存的流而不是基于文件的流:

  1. 使用例如解码base64图像。 Apache Common's codec,转换为字节数组。
  2. 使用ByteArrayInputStream
  3. 从字节数组创建输入流
  4. 通过ImageIO.read
  5. 从流中读取图片
  6. 保存到PNG并作为流输出到客户端。