【问题标题】:Android not recognizing Bitmap.getColor, something about version, why is this?Android 无法识别 Bitmap.getColor,关于版本,这是为什么呢?
【发布时间】: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


【解决方案1】:

试试这个

ImageView imageView = findViewById(R.id.image_view);
Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
int pixel = bitmap.getColor(1,1);

更多点击here!我认为这会有所帮助

【讨论】:

  • 嗨,Tama,请不要链接外部链接,因为外部链接共享有时会导致链接过期或删除。请根据 sn-p shared 分享适合用户的答案。
猜你喜欢
  • 1970-01-01
  • 2023-01-12
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多