2017-01-16 5 views
0

Ich habe ein Problem, das auftritt, wenn ich ein Bild mit Intent klicke und Android Kamera starte. Das Bild, das ich durch Intent-Daten erhalten enthält Informationen über die Größe von Bitmap-Bild. Vielleicht habe ich ein falsches Verständnis, aber bitte schlagen Sie vor, was ich tun kann, um es zu korrigieren. Das Image zeigt das gleiche Bild klickte ich aber ein sehr blurrred einBitmap Bild Größenänderung

Hier ist der zugrunde liegende Code:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
InputStream stream= null; 
     super.onActivityResult(requestCode, resultCode, data); 
     if(this.requestCode == requestCode && resultCode == RESULT_OK){ 
      try{ 
       //stream= getContentResolver().openInputStream(data.getData()); 
       Bundle extras= data.getExtras(); 
       Bitmap bitmap = (Bitmap) extras.get("data"); 
       imageHolder.setImageBitmap(bitmap); 
      } 
      catch (Exception ex){ 
       ex.printStackTrace(); 
      } 
     } 
    } 
+0

Verwendung bitmap.createScaledBitmap(); –

+0

Warum nicht Uri anstelle von Bitmap verwenden? –

Antwort

0
 try{ 
      //stream= getContentResolver().openInputStream(data.getData()); 
      Bundle extras= data.getExtras(); 
      Bitmap bitmap = (Bitmap) extras.get("data"); 
      //set value Width=200, Height=200 
      Bitmap resizedimg = Bitmap.createScaledBitmap(bitmap, Width, Height, true); 

      imageHolder.setImageBitmap(resizedimg); 
     } 
     catch (Exception ex){ 
      ex.printStackTrace(); 
     } 
+0

Das Bild ist auch nach der Verwendung von bitmap.createScaledBitmap weiterhin unscharf –

0

vielleicht sollten Sie eine uri zu Kamera passieren, und erhalten Bild von ihm, wenn ActivityResult statt von Bitmap

0

versuchen Sie dies:

public class MainActivity extends Activity { 

    static int CAMERA_TAKE_PIC =1; 
    Uri outPutfileUri; 
    ImageView mImageView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mImageView = (ImageView) findViewById(R.id.image); 
    } 


    public void CameraClick(View v) { 

     Intent intent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     File file = new File(Environment.getExternalStorageDirectory(), 
       "Photo.jpg"); 
     outPutfileUri = Uri.fromFile(file); 
     intent.putExtra(MediaStore.EXTRA_OUTPUT, outPutfileUri); 
     startActivityForResult(intent, CAMERA_TAKE_PIC); 
    } 

    Bitmap bitmap = null; 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode,Intent data) 
    { 
     if (requestCode == CAMERA_TAKE_PIC && resultCode==RESULT_OK) { 

      String uri = outPutfileUri.toString(); 
      Log.e("uri-:", uri); 
      Toast.makeText(this, outPutfileUri.toString(),Toast.LENGTH_LONG).show(); 

      //Bitmap myBitmap = BitmapFactory.decodeFile(uri); 
      // mImageView.setImageURI(Uri.parse(uri)); OR drawable make image strechable so try bleow also 

      try { 
       bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), outPutfileUri); 
       Drawable d = new BitmapDrawable(getResources(), bitmap); 
       mImageView.setImageDrawable(d); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 


     } 
} 

} 

ich denke, das Bild unscharf ist, weil Die Absichtsdaten enthalten nur die thumbnail des Bildes. Sie können das Bild auf dem internen/externen Speicher speichern und dann erwerben.

0

Das Bild ist wahrscheinlich verschwommen, da die Absichtsdaten nur die Miniaturansicht des Bildes enthalten. Sie müssen das Bild auf dem internen/externen Speicher speichern und dann es erwerben. Auch Ihre Frage sollte sein, wie man Bild in voller Größe von der Kamera bekommt. Gehen Sie durch dieses Dokument https://developer.android.com/training/camera/photobasics.html.

Dies ist, wie es getan werden sollte

Intent i=new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
File dir= 
    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); 

output=new File(dir, "CameraContentDemo.jpeg"); 
i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(output)); 

startActivityForResult(i, CONTENT_REQUEST); 

refrence in diesem Link zu finden ist.

https://stackoverflow.com/a/32121829/3111083