1

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のビットマップとして取得するにはどうすればよいですか。

***アップデート

 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);

      }
    });

さて、ここにあります。このボタンは、カメラで写真を撮り、アクティビティを変更します。このようにすると、アプリを作成する時間がないため、2番目のアクティビティでアプリを使用して読み取ると、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秒かかります。ファイルが作成されたかどうかを確認する方法はありますか?もちろん、それが本当なら、それは活動を変えるはずです。なにか提案を?

4

1 に答える 1

0

まず、必要なディレクトリに画像があるかどうかを確認してください/sdcard/yourdollar/img001.jpgそして、このようにしてみてください-

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

Logcatで画像の高さと幅を取得します

Log.i("width and height: ", bm.getWidth() + " " + bm.getHeight());
于 2012-07-28T12:07:15.060 に答える