从Assets加载位图后出现NullPointerException

时间:2018-03-20 04:21:38

标签: android android-bitmap bitmapfactory

我正在从资产中加载一个位图来对其进行一些分类。位图是从资产文件夹加载的,没问题。当我在调试模式下运行时,我可以查看我的位图图像。但是,当我试图将它传递给我的方法"分类"我有这个错误:

FATAL EXCEPTION: main
              Process: com.example.anne_maelle.cifar10_final, PID: 10046
              java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.anne_maelle.cifar10_final.ImageClassifier.classifyFrame(android.graphics.Bitmap)' on a null object reference
                  at com.example.anne_maelle.cifar10_final.ClassifyActivity.classify(ClassifyActivity.java:61)
                  at com.example.anne_maelle.cifar10_final.ClassifyActivity.run_test(ClassifyActivity.java:54)
                  at com.example.anne_maelle.cifar10_final.ClassifyActivity$1.onClick(ClassifyActivity.java:37)
                  at android.view.View.performClick(View.java:5198)
                  at android.view.View$PerformClick.run(View.java:21147)
                  at android.os.Handler.handleCallback(Handler.java:739)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:148)
                  at android.app.ActivityThread.main(ActivityThread.java:5417)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

我试图显示位图,但它没有做任何事情:没有错误但也没有图像。 我的代码是:

protected void run_test() throws IOException{
    AssetManager assets = this.getAssets();
    String imgs[] = assets.list("images");
    System.out.println("run test apres getAsset: "+imgs.toString());
    for(int i=0;i<imgs.length;i++){
        if(imgs[i].contains(".bmp")){
            System.out.println("loop, iteration "+i);
            Bitmap image = imageViaAssets(imgs[i],assets);
            if(image==null){
                Log.d(TAG,"null image");
            }
            else{
                Log.d(TAG,"image not null");
            }
            classify(image);
        }
    }
}

protected Bitmap imageViaAssets(String filename,AssetManager assets)throws IOException{
    InputStream ims = assets.open("images/"+filename);
    Bitmap image = BitmapFactory.decodeStream(ims);
    ims.close();
    ImageView img = (ImageView) findViewById(R.id.imageView);
    img.setImageBitmap(image);
    return image;
}

0 个答案:

没有答案