При использовании приложения камеры в Android, как я могу вернуть все изображение вместо только миниатюры?

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

  •  27-10-2019
  •  | 
  •  

Вопрос

Я делаю приложение, которое отправляет снимки, сделанное из приложения камеры, однако изображение, которое оно возвращает, кажется всего лишь миниатюрой, как я могу заставить его повернуть все изображение?

Следующий код получает изображение, но он слишком маленький.

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

  }
     };


}
Это было полезно?

Решение

Попробуйте использовать указанную реализацию здесь

Конкретно:

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

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

    }

};

Другие советы

Вы также можете изменить намерение, которое вы используете.

//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}
        }
    }
}

Это вернет URI, который вы можете использовать для доступа к изображению полного разрешения

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top