如何在图像中找到特定坐标的像素颜色?

时间:2012-03-09 10:00:19

标签: android bitmap pixels

我有一个活动,我的活动包含一个ImageView。我已经为ImageView实现了OnTouchListener。我想在图像中找到像素颜色。请让我知道如何找到像素颜色。我有一个想法,

- >在ImageView中,我只需找到X和Y坐标,找到相同X和Y坐标的像素,找到像素颜色。请允许我这样做。

请提供任何建议或文件。

使用ur引用我编写了位图代码,

int mId=R.drawable.with_colors;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), mId);
bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);  

在onTouch

int x=(int) event.getX();
int y=(int) event.getY();
int color=bitmap.getPixel(x, y);
Log.d("colors","---"+color);

但是这里记录打印“颜色--- 0”。

1 个答案:

答案 0 :(得分:4)

您可以使用imageview的getDrawable()方法获取绘制的内容,然后通过转换为BitmapDrawable并调用getBitmap()来获取位图:

Drawable d = imageView.getDrawable();
Bitmap bitmap = ((BitmapDrawable) d).getBitmap();
int color = bitmap.getPixel(x, y);

要获取坐标,请指定OnTouchListener

imageview.setOnTouchListener(new OnTouchListener(){
    @Override
    public boolean onTouch(View v, MotionEvent event){
        switch(event.getAction()){
        case MotionEvent.ACTION_UP:
            int x = (int) event.getX();
            int y = (int) event.getY();

            //TODO: get pixel at x, y

            break;
        default:
            return false;
        }
    return true;
    }
});

在上面的代码中,您基本上只需插入第一个代码,其中显示“获取x,y处的像素”以获取像素颜色。