Android: преобразование изображения в растровое изображение, в оттенки серого, растровое изображение в изображение.

Я не получаю никаких предупреждений о eclipse, когда компилирую этот код, но когда я запускаю его на устройстве или эмуляторе, эта программа была вынуждена закрыться.

public class MainActivity extends Activity {

    ImageView img;
    Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //convert imageview to bitmap
        img =(ImageView) findViewById(R.id.imageView1);
        BitmapDrawable drawable = (BitmapDrawable) img.getDrawable();
        final Bitmap imgbitmap = drawable.getBitmap();


        btn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                //convert bitmap to grayscale 
                Bitmap imgnew;
                imgnew = toGrayscale(imgbitmap);    

                //convert bitmap to imageview 
                ImageView imgbit;
                imgbit = (ImageView) findViewById(R.id.imageView2);
                imgbit.setImageBitmap(imgnew);
            }
        });

    }

    public Bitmap toGrayscale(Bitmap bmpOriginal){        
        int width, height;
        height = bmpOriginal.getHeight();
        width = bmpOriginal.getWidth();    

        Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
        Canvas c = new Canvas(bmpGrayscale);
        Paint paint = new Paint();
        ColorMatrix cm = new ColorMatrix();
        cm.setSaturation(0);
        ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
        paint.setColorFilter(f);
        c.drawBitmap(bmpOriginal, 0, 0, paint);
        return bmpGrayscale;
    }

}

person gussurya_w    schedule 29.11.2013    source источник
comment
@payeli, вот мой логарифм pastebin.com/MwgeXZbf   -  person gussurya_w    schedule 29.11.2013
comment
не могли бы вы вставить сюда свой лог-кот?   -  person Pradip    schedule 29.11.2013


Ответы (1)


Если выше приведен ваш полный код, то основная проблема заключается в том, что вы не определили btn. Вам нужно определить его перед использованием, иначе, когда вы нажмете на кнопку, она не будет работать. и это может закрыть ваше приложение.

 btn=(Button) findViewById(R.id.button1);
person Pradip    schedule 29.11.2013