Android搜索位图的突出颜色

时间:2014-12-30 18:53:13

标签: android colors

我得到了一个用户绘制的位图,并尝试通过执行下面的操作从中提取突出的颜色,但它似乎无法正常工作。

                final Map<Integer, Integer> getColorsFromImage;
                {
                    int mostlyUsed = 0;
                    final int widthInPx = drawView.getDrawingCache().getWidth();
                    final int heightInPx = drawView.getDrawingCache().getHeight();
                    Map<Integer, Integer> colors = new HashMap<Integer, Integer>(); // rgb

                    int count = 0;
                    int currentColor = 0;
                    for(int x = 0; x < widthInPx; x++){
                        for(int y = 0; y < heightInPx; y++){

                            count = 0;
                            currentColor = drawView.getDrawingCache().getPixel(widthInPx, heightInPx);
                            if(colors.containsKey(currentColor)){
                                count = colors.get(currentColor) + 1;
                            }
                            if (count > mostlyUsed) {
                            mostlyUsed = count;
                            }
                            colors.put(currentColor, count);
                            count = 0;
                        }
                    }
                    Integer mostlyUsedColor = colors.get(mostlyUsed);  

                    switch (mostlyUsedColor){
                        case #A52A2A:
                      do sth;
                       break;
                         case #FFFFFF:
                       (...)
                    }

你对此有什么建议吗?

1 个答案:

答案 0 :(得分:1)

在最新的支持v7库中,只有你需要的东西类。来自文档:

  

v7调色板支持库包含Palette类,可让您从图像中提取突出的颜色

You can read more about it here.

简单用法:

Palette.generateAsync(bitmap, new Palette.PaletteAsyncListener() {
    @Override 
    public void onGenerated(Palette palette) {
        // colors generated
    }
});