2017-01-25 14 views
0

イメージURIを取得しようとしていますが、イメージをイメージビューに設定しようとしています...しかし、試してみる度にイメージビューに黒いイメージが表示されます....カメラの意図からイメージURIを取得し、イメージをイメージビューに設定

以下は

は私のコードです: -

// CAMERA INTENT

Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT,mImageCaptureUri); 

startActivityForResult(i, request); 

カメラ意図からデータを取得

これを解決するにはどうすればよい
Bundle extra = data.getExtras(); 
Bitmap photos =(Bitmap)extra.get("data"); 
String path=getOriginalImagePath(); 
File f = new File(path); // 
ImageURI = Uri.fromFile(f); 
showpotos.setImageURI(ImageURI); 



public String getOriginalImagePath() { 
     String[] projection = { MediaStore.Images.Media.DATA }; 
     Cursor cursor = Profile_details.this.managedQuery(
       MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
       projection, null, null, null); 
     int column_index_data = cursor 
       .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
     cursor.moveToLast(); 

     return cursor.getString(column_index_data); 
    } 

.... plsは

+1

まず最初に、「Uri」から直接ビットマップをデコードしないでください。あなたは記憶上の問題を抱えているかもしれません。代わりに、 'Glide'、' Picasso'などの画像ローダーを使用してください。 – Wizard

答えて

2

は、2番目のコード・リスト内のすべてを削除しますヘルプ。

onActivityResult()には、mImageCaptureUriから画像を読み込みます。それはあなたがカメラアプリに画像を保存するように指示した場所です。

+0

mImageCaptureUriはヌルを返します。 –

+0

@AkshayDeepLamba:設定変更(例えば、保存されたインスタンス状態 'Bundle')を通してこの値を保持していることを確認してください。 https://github.com/commonsguy/cw-omnibus/tree/master/Camera/FileProviderを参照してください。 – CommonsWare

1

こんにちはコードの下に使用します。 -

カメラを開くために意図: -

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
// Declare mUri as globel varibale in class 
mUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "pic_"+ String.valueOf(System.currentTimeMillis()) + ".jpg")); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, mUri); 
startActivityForResult(intent, 1); 

コードActivtyResult機能で: - イメージの実際のパスを取得する

if(requestCode==1) { 

    image_str =getRealPathFromURI(mUri).toString(); 
    try { 
    Picasso.with(getApplicationContext()).load(mUri)into(Imageview1); 
      } catch (Exception e) { 
       e.printStackTrace(); 
          } 
        } 

機能: -

public String getRealPathFromURI(Uri contentUri) 
      { 
       try 
       { 
        String[] proj = {MediaStore.Images.Media.DATA}; 
        Cursor cursor = managedQuery(contentUri, proj, null, null, null); 
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
        System.out.println("column_index of selected image is:"+column_index); 
        cursor.moveToFirst(); 
        System.out.println("selected image path is:"+cursor.getString(column_index)); 
        return cursor.getString(column_index); 
       } 
       catch (Exception e) 
       { 
        return contentUri.getPath(); 
       } 
      } 

そして、マニフェストファイルに次の権限を宣言します -

以下
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
0

は、私が使ってきたし、それがどのような作品です。解決策をまだ探している場合は、試してみることをおすすめします。

public void takePicture(View view) { 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    file = Uri.fromFile(getOutputMediaFile()); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, file); 

    startActivityForResult(intent, 100); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent 
data) { 
    if (requestCode == 100) { 
     if (resultCode == RESULT_OK) { 
      imageView.setImageURI(file); 
    } 
    } 
} 
関連する問題