int android.graphics.Bitmap.getWidth() 错误

Error in int android.graphics.Bitmap.getWidth()

我正在尝试获取歌曲专辑封面并使其模糊,它工作正常但是对于其中一首歌曲它正在崩溃这首歌不包含任何专辑封面,但应用程序不会因其他歌曲而崩溃专辑封面。 这是我试过的

 Uri myUri = Uri.parse(Singleton.getInstance().getAlbum_art());
    try {

        InputStream image_stream = getContentResolver().openInputStream(myUri);
        Bitmap bitmap = BitmapFactory.decodeStream(image_stream);
        Bitmap blurredBitmap = GaussianBlur.with(this).maxSixe(100).render(bitmap);
        if (blurredBitmap != null) {
            imageView.setImageBitmap(blurredBitmap);
        }


    } catch (FileNotFoundException e) {
        e.printStackTrace();
        Bitmap blurredBitmap = GaussianBlur.with(this).maxSixe(100)
                .render(R.drawable.music);
        imageView.setImageBitmap(blurredBitmap);
    }

以下代码适用于没有任何专辑的其他歌曲 art.This 是我遇到的错误。

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: beatbox.neelay.another2, PID: 25757
              java.lang.RuntimeException: Unable to resume activity {beatbox.neelay.another2/beatbox.neelay.another2.Main2Activity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
                  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3110)
                  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3141)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2488)
                  at android.app.ActivityThread.access0(ActivityThread.java:153)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349)
                  at android.os.Handler.dispatchMessage(Handler.java:102)
                  at android.os.Looper.loop(Looper.java:148)
                  at android.app.ActivityThread.main(ActivityThread.java:5441)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
               Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
                  at com.vansuita.gaussianblur.GaussianBlur.scaleDown(GaussianBlur.java:76)
                  at com.vansuita.gaussianblur.GaussianBlur.render(GaussianBlur.java:45)
                  at beatbox.neelay.another2.Main2Activity.update(Main2Activity.java:173)
                  at beatbox.neelay.another2.Main2Activity.onResume(Main2Activity.java:160)
                  at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1259)
                  at android.app.Activity.performResume(Activity.java:6379)
                  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3099)
                  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3141) 
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2488) 
                  at android.app.ActivityThread.access0(ActivityThread.java:153) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349) 
                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                  at android.os.Looper.loop(Looper.java:148) 
                  at android.app.ActivityThread.main(ActivityThread.java:5441) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628) 

所以我尝试遵循这两个并尝试了这种方式

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(objElement, options);

我正在 try /catch 中执行此操作,因此即使专辑封面不可用,它也会转到 catch 块,并且 songs.How 的其余部分也会修复此问题。

专辑封面的文件似乎存在或可以找到,但无法将其读入图像或类似内容。

解决方案是确保您传递的要模糊的图像不为空:

InputStream image_stream = getContentResolver().openInputStream(myUri);
Bitmap bitmap = BitmapFactory.decodeStream(image_stream);
if (bitmap != null) {
    Bitmap blurredBitmap = GaussianBlur.with(this).maxSixe(100).render(bitmap);
    if (blurredBitmap != null) {
        imageView.setImageBitmap(blurredBitmap);
    }
} else {
    Bitmap blurredBitmap = GaussianBlur.with(this).maxSixe(100)
            .render(R.drawable.music);
    imageView.setImageBitmap(blurredBitmap);
}