为什么我的图像过滤器只在从图库中选择图像后才会导致崩溃?

时间:2017-07-23 18:16:00

标签: android bitmap imageview illegalstateexception invocationtargetexception

我正在尝试在我的应用中创建图像过滤器,但只有在我的实际设备上使用相机拍摄图像时它们才有效。如果我尝试在模拟器上使用代码,使用相机仍然会破坏它。如果我从手机的图库中选择一张图片,它就会崩溃。我运行此代码时收到InvocationTargetException和IllegalStateException。

Bitmap darken(Bitmap bmp) {
    for (int i = 0; i < bmp.getWidth(); i++) {
        for (int j = 0; j < bmp.getHeight(); j++) {
            int red = (bmp.getPixel(i, j) >> 16) & 0xFF;
            int green = (bmp.getPixel(i, j) >> 8) & 0xFF;
            int blue = (bmp.getPixel(i, j) >> 0) & 0xFF;
            red -= 25.5;
            green -= 25.5;
            blue -= 25.5;
            if (red < 0) {
                red = 0;
            }
            if (green < 0) {
                green = 0;
            }
            if (blue < 0) {
                blue = 0;
            }
            bmp.setPixel(i, j, Color.rgb(red, green, blue));
        }
    }
    return bmp;
}

这是调用该方法的地方。

final Button darkenButton = (Button) findViewById(R.id.darkenButton);
darkenButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            BitmapDrawable bDraw = (BitmapDrawable) imageView.getDrawable();
            Bitmap bmap = bDraw.getBitmap();
            bmap = darken(bmap);
            imageView.setImageBitmap(bmap);
        }
    });

0 个答案:

没有答案