【发布时间】:2020-07-02 03:05:12
【问题描述】:
我正在尝试获取位图对象中特定像素的颜色值。
我的MainActivity.java 中有以下功能:
@RequiresApi(api = Build.VERSION_CODES.Q)
private boolean isCenterWhitePixel(Bitmap bitmap) {
Color color = bitmap.getColor(150, 150);
int[] rgbValues = { (int) color.red(), (int) color.green(), (int) color.blue()};
if (rgbValues[0] == 255 && rgbValues[1] == 255 && rgbValues[2] == 255) {
return true;
}
else {
return false;
}
}
注意:@RequiresApi(api = Build.VERSION_CODES.Q) 行被添加到顶部,因为在Color color = bitmap.getColor(150, 150); android studios 的工具提示行上抱怨以下内容:
Call requires API level Q (current min is 23): android.graphics.Bitmap#getColor
所以我遵循了 android studio 建议的解决方案并添加了 @RequiresAPI 行。
结果我得到了以下错误:
java.lang.NoSuchMethodError: No virtual method getColor(II)Landroid/graphics/Color; in class Landroid/graphics/Bitmap; or its super classes (declaration of 'android.graphics.Bitmap' appears in /system/framework/framework.jar)
有什么方法可以让Bitmap.getColor 函数工作?
【问题讨论】:
-
您可以改用the
getPixel(int, int)method。它返回一个简单的int值,您可以使用静态Color类方法来获取组件;例如,int color = bimap.getPixel(150, 150);、int red = Color.red(color);。但是,您实际上并不需要仅仅为了比较而获取各个组件。你可以简单地做return (color == Color.WHITE);。
标签: java android android-studio bitmap