想知道我是否可以得到一些关于我正在开发的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();
}
非常感谢任何帮助!
答案 0 :(得分:0)
您可以为ColorName
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);