Как найти цвет пикселей в определенной координате в изображениях? - PullRequest
1 голос
/ 09 марта 2012

У меня есть одно действие, в моем действии есть один ImageView. Я реализовал OnTouchListener для ImageView. Здесь я хочу найти цвет пикселей там, где я касаюсь изображения. Пожалуйста, дайте мне знать, как найти цвет пикселей. У меня есть идеи,

-> В ImageView, где я касаюсь, просто найдите координаты X и Y и найдите пиксели с одинаковыми координатами X и Y и найдите цвет пикселей. Пожалуйста, дайте мне это возможно.

Пожалуйста, дайте любое предложение илидокумент для этого, пожалуйста.

со ссылкой на ваш я написал код для растрового изображения,

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 Ответ

4 голосов
/ 09 марта 2012

Вы можете использовать метод 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;
    }
});

В приведенном выше коде вы можете просто вставить первый код, где онговорит «получить пиксель в точке х, у», чтобы получить цвет пикселя.

...