¿Cómo puedo capturar la imagen y guardarla en la vista de imagen en mi actividad?

Tengo una actividad A en la que tengo un botón y una vista de imagen. Cuando hago clic en el botón, debería cargar la cámara y guardar la imagen en la vista de imagen. ¿Alguien puede proporcionar un código para esto?

Gracias de antemano !!!

preguntado el 04 de julio de 12 a las 08:07

Stackoverflow no es su grupo de trabajo de programación personal. Intenta usar Google primero. -

pon tu código aquí... ¿qué haces en tu código? -

7 Respuestas

vea el código a continuación ... puede ayudarlo.

ponga estas dos líneas en su botón, haga clic en ..

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(intent, 0);

crea este método en tu código ...

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

         if (requestCode == 0 && resultCode == RESULT_OK) {
            if (data != null) {

                photo = (Bitmap) data.getExtras().get("data");

                add_image.setImageBitmap(photo); /* this is image view where you want to set image*/

                Log.d("camera ---- > ", "" + data.getExtras().get("data"));


            }
        }
    }

.................................................. .........................................

El siguiente código le proporciona LastImageID tomado por la cámara. este es solo un código adicional que desea para la imagen del agujero, entonces es muy útil para usted.

.................................................. ......................................

private String getLastImageId() {
        final String[] imageColumns = { MediaStore.Images.Media._ID,
                MediaStore.Images.Media.DATA };
        final String imageOrderBy = MediaStore.Images.Media._ID + " DESC";
        Cursor imageCursor = managedQuery(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns,
                null, null, imageOrderBy);
        if (imageCursor.moveToFirst()) {
            int id = imageCursor.getInt(imageCursor
                    .getColumnIndex(MediaStore.Images.Media._ID));
            String fullPath = imageCursor.getString(imageCursor
                    .getColumnIndex(MediaStore.Images.Media.DATA));

            imageCursor.close();
            return fullPath;
        } else {
            return "no path";
        }
    }

Respondido 04 Jul 12, 08:07

Puede crear un método para capturar la imagen y llamarlo en el onClickListener de su botón, así:

   public void takePicture(View view){

    try{
    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
    } catch(Exception e){
        e.printStackTrace();
    }
}

Y luego anule el método onActivityResult de esta manera:

     @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    case CAMERA_PIC_REQUEST:

    String path=null;
            try{
                Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
                thumbnail = Bitmap.createScaledBitmap(thumbnail,yourDesiredImageWidth, yourDesiredImageHeight, true);
                ImageView imageView = (ImageView) findViewById(R.id.yourImageView);  
                image.setImageBitmap(thumbnail);
                break;
            }catch(Exception ee){
                ee.printStackTrace();
            }
        }
    }

Respondido 04 Jul 12, 08:07

Gracias Funcionó!! - Annie

Su código de actividad

public class MainActivity extends Activity {
    /** Called when the activity is first created. */

    Button btnTakePhoto;
    ImageView imgTakenPhoto;
    private static final int CAM_REQUREST = 1313;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        btnTakePhoto = (Button) findViewById(R.id.button1);
        imgTakenPhoto = (ImageView) findViewById(R.id.imageView1);

        btnTakePhoto.setOnClickListener(new btnTakePhotoClicker());
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);

          if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK) {

                  if (data != null) {
              Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
              imgTakenPhoto.setImageBitmap(thumbnail);
                  }
          }
    }

    class btnTakePhotoClicker implements Button.OnClickListener
    {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
        }
    }
}

Su diseño:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Press the button, capture photo and enjoy!!"
        android:id="@+id/textview1"/>

    <Button
        android:text="Take Photo!"
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textview1">
    </Button>

    <ImageView
        android:id="@+id/imageView1"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:src="@drawable/icon"
        android:scaleType="centerCrop"
        android:layout_below="@+id/button1">
    </ImageView>
</RelativeLayout>

Respondido 04 Jul 12, 08:07

CemraImageActivity.java

public class CemraImageActivity extends Activity implements OnClickListener{
    private int CAMERA_REQUEST;
    private ImageView imageView;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);  

        this.imageView = (ImageView)this.findViewById(R.id.image_capture);
        imageView.setOnClickListener(this);           

    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if(resultCode != 0)
        {
            if (requestCode == CAMERA_REQUEST) 
            {
                Bitmap photo = (Bitmap) data.getExtras().get("data");
                imageView.setImageBitmap(photo);        
            }
        }
    }

    public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);  
        startActivityForResult(cameraIntent, CAMERA_REQUEST); 
    }  
}

principal.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="334dp"
        android:layout_height="wrap_content"
        android:text="Click this image for take a photo"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <ImageView
        android:id="@+id/image_capture"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.06"
        android:src="@drawable/ic_launcher" />

</LinearLayout>

Respondido 04 Jul 12, 10:07

forma muy sencilla de obtener un botón de clic y configurar la imagen de la tienda en la vista de imagen.

`clase pública MainActivity extiende Actividad {

private static final int CAMERA_PIC_REQUEST = 22;

Uri cameraUri;

Button BtnSelectImage;
private ImageView ImgPhoto;
private String Camerapath ;



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

    ImgPhoto = (ImageView) findViewById(R.id.imageView1);

    BtnSelectImage = (Button) findViewById(R.id.button1);
    BtnSelectImage.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            // TODO Auto-generated method stub
            try {
                   Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                   startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
            } catch (Exception e) {
                Toast.makeText(getApplicationContext(), "Couldn't load photo", Toast.LENGTH_LONG).show();
            }
        }
    });

}


@Override
public void onActivityResult(final int requestCode, int resultCode, Intent data) {
    try {
        switch (requestCode) {
       case CAMERA_PIC_REQUEST:
            if (resultCode == RESULT_OK) {
                try {
                      Bitmap photo = (Bitmap) data.getExtras().get("data"); 

                      ImgPhoto.setImageBitmap(photo);    

                } catch (Exception e) {
                    Toast.makeText(this, "Couldn't load photo", Toast.LENGTH_LONG).show();
                }
            }
            break;
          default:
            break;
        }
    } catch (Exception e) {
    }
}

}`

Establecer este Manifiesto.

<uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" android:required="false"></uses-feature>

Respondido 19 Jul 14, 08:07

Puño que necesita en manifiesto hacer esto después en mainactivity.java hacer esto

public class MainActivity extends Activity {
    Button button;
    ImageView photo;
    static final int Cam_Request = 1;

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

        button = (Button)findViewById(R.id.btnPhoto);
        photo = (ImageView)findViewById(R.id.ivPhoto);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent camera_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                File file = getFile();
                camera_intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
                startActivityForResult(camera_intent, Cam_Request);


            }
        });
    }
    private File getFile ()
    {
        File folder = new File("sdcard/camera_app");

        if(!folder.exists())
        {
            folder.mkdir();
        }

        File image = new File(folder,"image.jpg");
        return image;
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        String path = "sdcard/camera_app/image.jpg";
        photo.setImageDrawable(Drawable.createFromPath(path));
    }
}

Respondido el 01 de diciembre de 15 a las 08:12

esto en el manifiesto funcionará al 2% si funciona y para usted, acepte la respuesta si no, dígame qué está pasando mal: Facción Joni

Prueba como:

PASO 1: Inicie la cámara para tomar una imagen:

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(cameraIntent, 2); 

PASO 2: In onActivityResult obtener imagen de datos

protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
        if (requestCode == CAMERA_REQUEST) {  
            Bitmap photo = (Bitmap) data.getExtras().get("data"); 
            ImageView imageView=(ImageView) findViewbyId(R.id.imgv);
            imageView.setImageBitmap(photo);
        } 

EDIT: y segunda solución:

 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  
 intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "temp.jpg")));  
 startActivityForResult(intent, 2);  




 @Override  
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
        if (resultCode == NONE)  
            return;  
        if (requestCode == 2) {   
            File picture = new File(Environment.getExternalStorageDirectory() + "/temp.jpg");  
            ImageView imgView=(ImageView)findViewById(R.id.imgView);
            Uri imgUri=Uri.fromFile(picture);
            imageView.setImageURI(imgUri);  
        }  
    }

respondido 06 nov., 17:18

vea mi respuesta de edición y pruebe la segunda solución, asegúrese de tener permisos de almacenamiento interno en Manifast.xml - ρяσѕρєя K

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.