我使用Apache httpclient来调用REST Web服务。此服务以base64格式返回图像。我想将其转换为png格式的图像,但我不想保存此图像文件。原因是有超过10000个用户,如果我继续保存所有图像,它将消耗大量内存。
我正在使用JDK 1.7
有可能实现这个目标吗?
答案 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)
不应该很难 - 您可以使用基于内存的流而不是基于文件的流: