gpt4 book ai didi

java - 将 BufferedImage 转换为 byte[],不会损失质量并增加大小

转载 作者:行者123 更新时间:2023-11-30 04:54:38 25 4
gpt4 key购买 nike

我正在尝试将 BufferedImage 转换为字节数组。我有两个条件。 1.我不应该失去图像的质量。 2. 字节数组的大小应与实际图像相同。我尝试了几种选择。

选项 1:

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "png", baos);
baos.flush();
byte[] imageBytes = baos.toByteArray();
baos.close();

选项 2:

        WritableRaster raster = image.getRaster();
DataBufferByte data = (DataBufferByte) raster.getDataBuffer();
byte[] imageBytes = data.getData();

这两个选项都会增加图像的大小(对于大图像来说会增加两倍以上)。

感谢任何帮助。谢谢!

最佳答案

PNG 格式使用 lossless data compression ,因此您不必担心使用选项 1 会降低图像质量。

您如何看待图像尺寸的增加?我确信您知道 imageBytes.length 是什么。您认为这个值是应有的两倍,您将其与此进行比较是什么? (我认为你的假设可能是不正确的。)

您的原始源文件可能只是使用了比 Java 重新压缩它更高的压缩设置。您可能需要将一些额外的参数传递给您的编写器。请参阅how to compress a PNG image using Java有关一些其他详细信息 - 特别是 http://www.exampledepot.com/egs/javax.imageio/JpegWrite.html 的链接.

关于java - 将 BufferedImage 转换为 byte[],不会损失质量并增加大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8937241/

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