Bitmap.getPixel всегда возвращает черный - PullRequest
2 голосов
/ 12 февраля 2012

Я создаю приложение, которое включает в себя получение цвета части экрана. Для этого я использую метод Bitmap.getPixel, чтобы получить указанный пиксель экрана, а не преобразовываю его в формат RGB, чтобы мне было легче кодировать позже. Проблема не в том, что находится на экране, когда я использую метод getPixel, он всегда возвращает одинаковые значения RGB, R: 0 G: 0 B: 0 или черный, даже когда есть серая кнопка, закрывающая весь экран ! Вот код

package proof.of.concept;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.Display;
import android.view.View;
import android.widget.*;
public class ColorCheckerProofOfConcept extends Activity {
    private static final String TAG = "ColorChckerProofOfConcept:: ";  
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final Button button = (Button) findViewById(R.id.button1);

     button.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
             Display display = getWindowManager().getDefaultDisplay();
                int width = display.getWidth();
                int height = display.getHeight();
                   Log.d(TAG, "Width and Height Retrieved As: " + width + ", " + height);
                Bitmap b = Bitmap.createBitmap(width, height, Bitmap.Config. RGB_565);
                String hexValue;

                 int test;
              test = b.getPixel(240, 350);

             hexValue = Integer.toHexString(test);
             Log.d(TAG, "pixel at 100, 200 succesfully retreived! with value of: " + test);
             Log.d(TAG, "and an Hex value of: " + hexValue);
             int blue = Color.blue(test);
             int red = Color.red(test);
             int green = Color.green(test);
//this is a modification

               Log.d(TAG, "RGB COLOR! R:" + red + " G:" + green + " B:" + blue);
         }
     });
   }
}

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

Если кто-то еще ищет то, что вы должны делать ...

//just add this is

    Canvas c = new Canvas(b);
    View view = ((ViewGroup)findViewById(android.R.id.content)).getChildAt(0);
    view.draw(c);

//right after you create your bitmap, that should print the screen onto the bitmap
//from there, you can use Bitmap.getPixel(X,Y)
0 голосов
/ 12 февраля 2012

Вы извлекаете из своего растрового изображения не то, что находится на вашем экране. Вы создали черное растровое изображение размером вашего экрана, но не вашего экрана. Ваш код работает для извлечения из этого растрового изображения. Вы пытаетесь создать растровое изображение своего экрана?

...