如何重复返回颜色的方法?图像具有的所有RGB值

时间:2013-05-05 23:51:46

标签: java c colors

类似于:

public Color colorMoreTimesRepeated() {

} 而且我不知道如何制作一个计算不同颜色的变量并将其重新给我重复一次。

想法是计算图像的所有颜色并给出重复多次的颜色,我尝试过使用* 2旅程,当重复任何颜色时,它开始计数,最后它返回一个更重复的。

    count=0;
    Color moreRepeated = null;
    for(int i=0;i< high;i++){
    for(int j=0;j<wide;j++){ *

2 个答案:

答案 0 :(得分:0)

Stackoverflow上有一个很好的答案。 &#39; ave发布了以下代码以及讨论链接。

Set<Integer> colors = new HashSet<Integer>();
    BufferedImage image = ImageIO.read(new File("test.png"));    
    int w = image.getWidth();
    int h = image.getHeight();
    for(int y = 0; y < h; y++) {
        for(int x = 0; x < w; x++) {
            int pixel = image.getRGB(x, y);     
            colors.add(pixel);
        }
    }
    System.out.println("There are "+colors.size()+" colors");

https://stackoverflow.com/a/5253698/2353014

答案 1 :(得分:0)

调整Bjen的答案,实际算上:

Map<Integer,Integer> rgbCounts = new HashMap<Color,Integer>();
BufferedImage image = ImageIO.read(new File("test.png"));    
int w = image.getWidth();
int h = image.getHeight();
for(int y = 0; y < h; y++) {
    for(int x = 0; x < w; x++) {
        int pixel = image.getRGB(x, y);
        // count it;
        Integer count = rgbCounts.get( pixel);
        rgbCounts.put( pixel, (count != null) ? count+1 : 1);
    }
}

为此 - 在地图中找到最高的Count,并从RGB返回颜色。