Al usar la aplicación de la cámara en Android, ¿cómo puedo devolver toda la imagen en lugar de solo la miniatura?

StackOverflow https://stackoverflow.com/questions/4854517

  •  27-10-2019
  •  | 
  •  

Pregunta

Estoy haciendo una aplicación que envía una imagen tomada de la aplicación de la cámara, sin embargo, la imagen que devuelve parece ser solo una miniatura ¿Cómo puedo hacer que gire toda la imagen?

El siguiente código obtiene una imagen, pero es demasiado pequeña.

public class OnTheJobActivity extends Activity{

 private static final int CAMERA_PIC_REQUEST = 1337;
 private Button takePictureButton;
 private Button sendPictureButton;
 private Bitmap thumbnail; 

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  this.setRequestedOrientation(
          ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
  setContentView(R.layout.onthejob);
  takePictureButton = (Button) findViewById(R.id.takePictureButton);
  takePictureButton.setOnClickListener(takePictureButtonListener);
  sendPictureButton = (Button) findViewById(R.id.sendPictureButton);
  sendPictureButton.setOnClickListener(sendPictureButtonListener);


 }

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
     if (requestCode == CAMERA_PIC_REQUEST) {  
  thumbnail = (Bitmap) data.getExtras().get("data");  
  ImageView image = (ImageView) findViewById(R.id.photoResultView);  
  image.setImageBitmap(thumbnail);
  sendPictureButton.setVisibility(Button.VISIBLE);
     }  
 }  


 private OnClickListener takePictureButtonListener = new OnClickListener() {

  @Override
  public void onClick(View arg0){
      Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
      startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);  

  }
     };

     private OnClickListener sendPictureButtonListener = new OnClickListener() {

  @Override
  public void onClick(View arg0){

      Intent i = new Intent(Intent.ACTION_SEND);
      i.putExtra(Intent.EXTRA_EMAIL, "abc@gmail.com");
      i.putExtra(Intent.EXTRA_SUBJECT,"On The Job");
      i.putExtra(Intent.EXTRA_STREAM, thumbnail);
      i.setType("image/bmp");
      startActivity(Intent.createChooser(i,"Emailfile"));

  }
     };


}
¿Fue útil?

Solución

Intente usar la implementación que se muestra aquí

Específicamente:

Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {

    public void onPictureTaken(byte[] imageData, Camera c) {

    }

};

Otros consejos

También puedes cambiar la intención que estás usando.

//in your buttonListener
ContentValues values = new ContentValues();
imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
//create new Intent
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

try{
    startActivityForResult(i, ACTIVITY_GET_IMAGE);
}
catch(Exception ex){
    Log.v("BRE", ex.toString());
}
//in your activity
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if(requestCode == ACTIVITY_GET_IMAGE){
        if(resultCode == RESULT_OK){
            try{String uri = data.getData().toString()}
            catch(NullPointerException e){//do something}
        }
    }
}

Esto devolverá un URI que luego puede usar para acceder a la imagen de resolución completa

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top