在我的软件中,我生成一个图像(通过缩放多个图像并合并它们)然后我应该将其转换为InputStream
,如:
InputStream toInputStream(BufferedImage picture) throws IOException {
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(picture, "png", os); //up to 15 seconds
return new ByteArrayInputStream(os.toByteArray());
}
但这种方法的第二行最多需要15秒才能完成!为了比较,整个图像在1.4秒内生成。为什么这么慢?是否可以更快捷地将BufferedImage
转换为InputSream
?
UPD:
我写了一个测试方法:
void ConversionTest(){
ByteArrayOutputStream os = new ByteArrayOutputStream();
try {
BufferedImage img = ImageIO.read(new File("C:\\1.png"));
long time = System.currentTimeMillis();
System.out.println("Started");
ImageIO.write(img, "png", os);
System.out.println("Ended in " + (System.currentTimeMillis() - time) +" ms");
} catch (IOException e) {}
}
在我的电脑上花费9113毫秒。