RGB值到Android应用程序中的颜色名称

时间:2015-03-24 16:40:33

标签: java android arrays arraylist camera

想知道我是否可以得到一些关于我正在开发的Android应用程序的建议或可能的代码示例。所以我正在创建一个Android应用程序,用户可以在其中拍照,然后通过按下按钮识别图片中的颜色。按钮工作正常并返回RGB值,但我希望它显示颜色的名称。我对java很新,我认为最好的方法是使用某种形式的数组,列出不同的颜色,如下所示:

private ArrayList<ColorName> initColorList() {
    ArrayList<ColorName> colorList = new ArrayList<ColorName>();
    colorList.add(new ColorName("AliceBlue", 0xF0, 0xF8, 0xFF));
    colorList.add(new ColorName("Azure", 0xF0, 0xFF, 0xFF));
    colorList.add(new ColorName("Beige", 0xF5, 0xF5, 0xDC));
    colorList.add(new ColorName("Bisque", 0xFF, 0xE4, 0xC4));
    // Add more colors here
    return colorList;

可能还有某种形式的代码可以选择显示最接近结果RGB值的颜色名称。这是我目前的代码......

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    Bitmap bp = (Bitmap) data.getExtras().get("data");

    bmp = bp;

    imgFavorite.setImageBitmap(bp);
}

public void pix(){
    operation= Bitmap.createBitmap(bmp.getWidth(),
            bmp.getHeight(),bmp.getConfig());

    int height = bmp.getHeight();
    int width = bmp.getWidth();
    int p = bmp.getPixel(height / 2, width / 2);

    int r = Color.red(p);
    int g = Color.green(p);
    int b = Color.blue(p);

    Toast.makeText(this, String.valueOf(r) + String.valueOf(g) + String.valueOf(b), Toast.LENGTH_LONG).show();
}

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您可以为ColorName

实施hashCode and equals做一些非常简单的事情
public class ColorName {
private int r;
private int b;
private int g;

//Auto generated
@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;

    ColorName colorName = (ColorName) o;

    if (r != colorName.r) return false;
    if (b != colorName.b) return false;
    return g == colorName.g;

}
//Auto generated
@Override
public int hashCode() {
    int result = r;
    result = 31 * result + b;
    result = 31 * result + g;
    return result;
}

}

然后使用HashMap或其他一些地图容器,如

Map<ColorName, String> myColorMap = new HashMap<>();
myColorMap.put(new ColorName(0xF0, 0xF8, 0xFF), "AliceBlue");...

当你需要一些颜色名称时,只需使用地图

String colorName = myColorMap.get(myColorNameObject);