¿Cómo pasar la imagen de la cámara de una intención a otra en Android?
-
11-12-2019 - |
Pregunta
Estoy intentando enviar la imagen de la cámara de un intento a otro para mostrarla.Actualmente estoy intentando utilizar el siguiente método,
Una vez capturada la imagen
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode)
{
case CAMERA_RECEIPTREQUEST:
if(resultCode== Activity.RESULT_OK)
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
//ImageView jpgView = (ImageView)findViewById(R.id.imageView1);
Bitmap receipt = BitmapFactory.decodeFile(photo.toString(),options);
Intent imagepass = new Intent(Activity1.this,Activity2.class);
imagepass.putExtra("imagepass", imagepass);
startActivity(imagepass);
en segunda actividad
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.receiptreview);
//creating view ids
createViewIds();
Bitmap receiptimage = (Bitmap) getIntent().getExtras().getParcelable("imagepass");
receipt.setImageBitmap(receiptimage);
}
Pero muestra un error de StackOverFlow,
at java.util.HashMap$EntrySet.iterator(HashMap.java:944)
at android.os.Parcel.writeMapInternal(Parcel.java:486)
at android.os.Bundle.writeToParcel(Bundle.java:1552)
at android.os.Parcel.writeBundle(Parcel.java:502)
at android.content.Intent.writeToParcel(Intent.java:5477)
No estoy seguro de si estoy probando el método incorrecto. Estoy buscando alguna muestra o solución para esto.
Gracias por su ayuda chicos.
Solución
usar
Bitmap receipt = BitmapFactory.decodeFile(photo.toString(),options);
Intent imagepass = new Intent(Activity1.this,Activity2.class);
imagepass.putExtra("imagepass", receipt );
startActivity(imagepass);
en lugar de
Bitmap receipt = BitmapFactory.decodeFile(photo.toString(),options);
Intent imagepass = new Intent(Activity1.this,Activity2.class);
imagepass.putExtra("imagepass", imagepass);
startActivity(imagepass);
Estás pasando imagepass de instancia de Intent en imagepass.putExtra("imagepass", imagepass);
así que pasa Bitmap
instancia en imagepass.putExtra("imagepass", receipt );
EDITAR:
para pasar imágenes (mapas de bits) entre actividades en Android, consulte estas publicaciones:
¿Cómo se pasan imágenes (mapas de bits) entre actividades de Android usando paquetes?
Otros consejos
de lo que puedo ver que pase la intención misma a enviar.Prueba:
imagepass.putExtra("imagepass", receipt);
podría funcionar, todavía nuevo en Android yo mismo.
Podemos probar otra manera de convertir la imagen en la matriz de bytes y luego pasar la matriz de bytes a través de la intención y en la actividad que se llama podemos convertir la matriz de bytes en mapa de bits