2017-12-21 21 views
0

画像を白黒画像に変換するプログラムを作成しようとしています。私は問題に遭遇し、同じ問題を探しましたが、私には適切な解決策が見つかりませんでした。ビットマップ、nullpointer例外

public class MainActivity extends AppCompatActivity { 

ImageView image; 
Drawable drawable; 
Bitmap bitmap; 

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

    image = (ImageView) findViewById(R.id.imageView); 

    bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap(); **// Here is line that error occur** 

    image.setImageBitmap(converter(bitmap)); 

} 

public Bitmap converter(Bitmap first) { 
    Bitmap end = Bitmap.createBitmap(first.getWidth(), 
      first.getHeight(), 
      first.getConfig()); 

スタックトレース:ここコードがある

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()' on a null object reference 
         at com.example.murat.giveeffect.MainActivity.onCreate(MainActivity.java:26) 
+0

あなたImageViewのは、すでにロードされた画像を持っています?。 –

+0

はい、それは空ではありません –

+0

これを試してください 'image.setDrawingCacheEnabled(true); Bitmap = image.getDrawingCache(); '代わりに' bitmap =((BitmapDrawable)image.getDrawable())。getBitmap(); ' –

答えて

1

あなたはbackground属性

android:background="@drawable/clip" 

代わりのsrcにあなたのImageViewののビットマップ描画可能に設定してください。

だからあなたのリソースファイル(activity_main.xml)はandroid:srcにbackground属性を置き換えることで変更します。

android:src="@drawable/clip" 
関連する問題