从sdcard读取图像时获取bitmap.getWidth()的nullpointerexception

时间:2012-07-28 11:49:41

标签: android image bitmap nullpointerexception

我使用BitmapFactory从SD卡读取图像:

String myJpgPath = "/sdcard/yourdollar/img001.jpg"; 
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
Bitmap bm = BitmapFactory.decodeFile(myJpgPath, options);

如果我写:

Log.i("width and height: ", bm.getWidth() + " " + bm.getHeight());

我得到一个nullpointer异常。我尝试使用Bitmap.createScaledBitmap()进行扩展,但我得到了同样的错误。在它之后我正在处理位图,所以我想在最后有一个位图有任何宽度或高度,因为看起来我没有给位图的参数。但我无法缩放它,那么如何将此图像作为宽度为500且高度为500的位图?

*** UPDATE

 buttonClick = (Button) findViewById(R.id.buttonClick);
    buttonClick.setOnClickListener(new OnClickListener() {
      public void onClick(View v) { // <5>
        preview.camera.takePicture(shutterCallback, rawCallback, jpegCallback);

            Intent intentstart = new Intent(CameraActivity.this, Intent2.class);
          startActivity(intentstart);

      }
    });

好的,这就是事情。此按钮用相机拍照然后更改活动。如果我这样做,应用程序没有时间创建,所以当我在第二个活动中使用它来读取它时,它会抛出nullpointerexception。所以我变得棘手(也错了)并且放了:

preview.camera.takePicture(shutterCallback, rawCallback, jpegCallback);

try {
        Thread.sleep(1200);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
       Intent intentstart = new Intent(CameraActivity.this, Intent2.class);
      startActivity(intentstart);

因此创建文件需要1.2秒,然后更改活动。有没有办法检查文件是否创建?当然,如果真的那么它应该改变活动。 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

首先检查您所需目录中的图像是否/sdcard/yourdollar/img001.jpg并且,尝试这样 -

String myJpgPath = "/sdcard/yourdollar/img001.jpg"; 
Bitmap bm = BitmapFactory.decodeFile(myJpgPath);

获取图像高度&amp; Logcat中的宽度

Log.i("width and height: ", bm.getWidth() + " " + bm.getHeight());