0

ギャラリーから画像を選択し、ImageView に画像を表示しています。私はそれを成功させることができます。私の問題は、カメラからキャプチャされた画像(.jpg画像)を設定しようとすると、画像ビューに表示されず、空白の画面が表示されることです。カメラからキャプチャされていない .jpg タイプの画像も正常に表示されます。理由はわかりませんが、サイズが大きいためかもしれません。助けてください 以下は私のコードです:

public class ImagePick extends Activity {

private Bitmap bitmap;
private ImageView imv;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_upload);
imv = (ImageView) findViewById(R.id.targetimage);

  Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
  intent.setType("image/*");
  startActivityForResult(intent, 0);

}


protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
     super.onActivityResult(requestCode, resultCode, imageReturnedIntent);

     switch(requestCode) {
     case 0:
         if(resultCode == RESULT_OK){ 
             Uri selectedImage = imageReturnedIntent.getData();
             String[] filePathColumn = {MediaStore.Images.Media.DATA};

             Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
             cursor.moveToFirst();

             int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
             String filePath = cursor.getString(columnIndex); // file path of selected image
             cursor.close();
                   //  Convert file path into bitmap image using below line.
             Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath);

                   // put  bitmapimage in your imageview
             imv.setImageBitmap(yourSelectedImage);
         }
     }
}
}

前もって感謝します

4

2 に答える 2

0

FileInputStream と BufferedInputStream を使用して画像を読み取ってから、画像をビットマップに変換する必要があります。

    private FileInputStream is = null;
    private BufferedInputStream bis = null;


is = new FileInputStream(new File(imagePath));
        bis = new BufferedInputStream(is);

リンクもチェック

ありがとう

于 2012-10-18T18:59:41.450 に答える
0

それ以外の:

int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex); // file path of selected image

試す:

int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);

BitmapDecodingの、カーソルを閉じます。

SD カードへのアクセスは AsynckTasks で行う必要があることに注意してください。また、画面に合わせて画像のサイズを変更できます。これにより、多くのメモリを使用しなくなります。他の回答Bitmap Out Of Memory Issuesをご覧ください。これを行う方法について。

于 2012-10-18T19:11:56.420 に答える