我得到了一个用户绘制的位图,并尝试通过执行下面的操作从中提取突出的颜色,但它似乎无法正常工作。
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:
(...)
}
你对此有什么建议吗?
答案 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
}
});