gpt4 book ai didi

java - 快速将图像转换为字节数组

转载 作者:行者123 更新时间:2023-12-01 12:56:56 25 4
gpt4 key购买 nike

我正在将图像对象转换为字节数组,如下所示:

private byte[] getImageBytes() throws IOException {
byte[] bytes;
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
ImageIO.write(copyImage(image), "png", baos);
baos.flush();
bytes = baos.toByteArray();
}
return bytes;
}

private BufferedImage copyImage(Image img) {
BufferedImage copyOfImage = new BufferedImage(getSize().width, getSize().height, BufferedImage.TYPE_INT_RGB);
Graphics g = copyOfImage.createGraphics();
g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
return copyOfImage;
}

问题是,转换 90KB 的图像需要超过 300 毫秒。如果图像的大小约为 1.2MB,则转换所需的时间只会稍长一些(大约 450 毫秒)。我测量了copyImage方法的时间。只需要 1ms 左右。问题似乎出在 ImageIO.write 方法上。

您知道有什么方法可以加快速度吗?

最佳答案

在 getImageBytes() 中,您将图像压缩为 PNG,这可能需要一些时间。您可以实现的最快的 ImageIO.write 调用是

ImageIO.write(copyImage(image), "bmp", baos);

没有压缩。尽管如此,ImageIO 仍然包含图像格式的引用实现,但这些图像格式的设计并不是为了提高速度。

关于java - 快速将图像转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23803250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com