你想要的准确度如何?您可以使用Bozhos的方法并在整个图像上循环,但对于大图像来说这可能会很慢.有16777216个可能的RGB值,并且在Map中为它们保留计数器效率不高.
另一种方法是使用图像重新取样以getScaledInstance将其缩小到较小的版本,例如1x1图像,然后用于getRGB获得该像素的颜色.您可以尝试使用不同的重采样算法,例如SCALE_REPLICATE和SCALE_AREA_AVERAGING,以查看最适合您的方法.
您可以循环BufferedImage(两个循环 - 一个从 0 到宽度,一个从 0 到高度),并获得调用getRgb(x, y)。然后计算每个不同的值。您可以使用 a Map(键 = 颜色,值 = 出现次数)。