2017-02-27 9 views
0

나는 노래 앨범 아트를 얻으 려하고 잘 동작하지만 흐리게 처리 중입니다. 앱이 앨범 아트없이 다른 노래에 추락하지 않습니다. 이 내가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.access$900(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.access$900(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)  

는 그래서 앨범 아트가 그것을 캐치로 이동합니다 사용할 수 없습니다 잡을 그래서 경우에도 /이 두 this을 따르도록 노력하고이 방법도

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

내가 시도에서이 일을하고 시도 차단하고 노래의 나머지 부분에도 사용할 예정입니다. 어떻게 수정해야합니까?

답변

1

앨범 아트 파일이 있거나 발견 될 수 있지만 이미지 나 이와 유사한 것으로 읽을 수는없는 것 같습니다.

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); 
} 
+0

내가 바보 같은 실수 들으을 할 것이라는 점을 잘 모릅니다 :

이 솔루션은 통과가 흐리게되는 이미지가 null가 아닌 것을 확인한다 – SAVVY