令人难以置信的慢速转换(Java)

时间:2016-12-21 14:21:50

标签: java type-conversion

在我的软件中,我生成一个图像(通过缩放多个图像并合并它们)然后我应该将其转换为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) {}
}

My sample file

在我的电脑上花费9113毫秒。

0 个答案:

没有答案