gpt4 book ai didi

java - 如何在不完全解码的情况下计算 png 文件的颜色?

转载 作者:行者123 更新时间:2023-12-01 11:45:50 28 4
gpt4 key购买 nike

考虑以下 java 代码:

File file = ...

BufferedImage image = ImageIO.read(file);
int w = image.getWidth();
int h = image.getHeight();
int count = 0;
for (int y = 0; y < h; y++) {
for (int x = 0; x < w; x++) {
int pixel = image.getRGB(x, y);
//count colors here
}
}

上面的代码中发生了什么:

  1. Png 字节来自磁盘
  2. 使用 png 解码器解码的字节
  3. 构建java镜像
  4. 计算颜色

我可以跳过步骤3吗?例如在解码期间计算字节数或更好地部分解码 png 图像并仅存储颜色信息。如何用java做到这一点?

注意

正如我所发现的,存储具有相同尺寸但不同颜色计数的图像会导致不同的尺寸。例如,照片可以比相同图像大 1000,但只有一种颜色(例如黑色)。所以理论上可以计算仅读取字节的图像而不解码整个图像。我对吗?或者编码算法不支持部分解码?

最佳答案

如果您想避免创建完整图像,可以使用 PNGJ ,一个 Java 解码器库(免责声明,我自己的),允许逐行渐进地读取图像。

主要优点是内存消耗更少(仅当图像很大时才相关),也许还有速度。与 BufferedImage 等更高级别图像抽象相比,另一个区别是该库以 PNG 使用的格式提供原始像素值,无需映射或转换 - 根据您的场景,这可以是否是一个加号。

当然,您仍然在完全解码图像,但无法避免这一点。

关于java - 如何在不完全解码的情况下计算 png 文件的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29136816/

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