Comprimir fotos

7 views
Skip to first unread message

Luis Antonio Garcia Perrusquia

unread,
Mar 10, 2016, 8:01:06 PM3/10/16
to desarrolladores-android
Hola buenas tardes, espero que me puedan ayudar, soy nuevo en esto de desarrollo android y estoy haciendo una pequeña aplicacion en donde entre a la camara tome una foto, la muestre en un ImageView y de igual manera acceder a la galería de fotos tomar una imagen y ponerla en el ImageView.

Ahora bien una vez que ya tenga la imagen en el ImageView (Ya sea foto sacada o imagen obetinda de la galeria)me gustaria escalar la imagen de tamaño y que pierda peso para poder ser enviada no se si este bien llamarlo como comprimir la imagen (Eh leido que las imagenes llegan a pesar 2MB).

Eh desarrollado un codigo para tomar la foto y para obtener de la galeria, solo que tengo un problema, cuando pongo la foto en el ImageView si giro el dispositivo de cualquier manera la foto que tengo en el ImageView se borra, no se por que suceda eso.

¿Me gustaria saber si mis lineas de codigo estan bien declaradas para mis propositos ya comentados y si me falta algo para tener bien echo mi codigo?

Variables que ocupo:
Button btnCaptura, btnObtener, btnBorrar, btnComprimir;
ImageView img;
Intent intent;
Bitmap bmp ;
int w, h;
final static int cons = 0;
final static int cons1 = 1;

Cree un metodo llamado Init para inicilizar dichas variables:
public void init(){
btnCaptura = (Button)findViewById(R.id.btnCaptura);
btnCaptura.setOnClickListener(this);

btnObtener =(Button)findViewById(R.id.btnObtener);
btnObtener.setOnClickListener(this);

btnBorrar = (Button)findViewById(R.id.btnBorrar);
btnBorrar.setOnClickListener(this);

btnComprimir = (Button)findViewById(R.id.btnComprimir);
btnComprimir.setOnClickListener(this);

img = (ImageView)findViewById(R.id.imagen);

bmp = (( BitmapDrawable ) img . getBackground ()). getBitmap();
w = bmp.getWidth();
h = bmp.getHeight();


}

Ahora bien mi onclick lo tengo un un SWITCH para los casos de que los botones sean oprimidos, esto lo hice con el fin de no tener muchos metodos OnCLicks
public void onClick(View v){
int id;
id = v.getId();
switch (id) {

case R.id.btnCaptura:
intent = new Intent (android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, cons);
break;

case R.id.btnObtener:
intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
startActivityForResult(intent.createChooser(intent, "Selecciona una imagen"), cons1);
break;

case R.id.btnBorrar:
img.setImageBitmap(null);
Toast.makeText(this, "Imagen borrada", Toast.LENGTH_LONG).show();
break;

/* case R.id.btnComprimir: //Este metodo lo tengo comentado por que aun no tengo el metodo para comprimir la imagen

if(bmp == null){
Toast.makeText(this, "No hay una imagen para comprimir", Toast.LENGTH_LONG).show();
}else{
try {

}catch (Exception e){
Toast.makeText(this, "" + e , Toast.LENGTH_LONG).show();
}
}*/

}

}//FIn del onCLick

Ahora bien por ultimo tengo mi metodo onActivityForResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK){

switch (requestCode){

case cons:
Bundle ext = data.getExtras();
bmp = (Bitmap)ext.get("data");
img.setImageBitmap(bmp);

if(bmp != null){
Toast.makeText(this, "Imagen OK", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(this, "Vuelve a tomar otra foto", Toast.LENGTH_LONG).show();
}
break;

case cons1:
Uri path = data.getData();
img.setImageURI(path);

if(path != null){
Toast.makeText(this, "Imagen OK", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(this, "Vuelve a cargar la imagen", Toast.LENGTH_LONG).show();
}
break;
}//Fin del switch

}
}

Bueno pues esto es lo que tengo, la aplicacion jala y todo pero tengo algunas dudas.
1.-Si guardo la imagen o algo parecido, yo no pongo ninguna especificacion de ruta para guardar, pero la imagen que tomo con loa camara si la guarda en la galeria.
2.-El boton de borrar solo pone en nulo el Bitmap, pero no borra una imagen.
3.-Algun ejemplo para poder comprimir la imagen mmostrada en el ImageView

De ante mano por sus repuestas muchisimas gracias y quedo en espera de respuestas
SALUDOS A TODOS!


Reply all
Reply to author
Forward
0 new messages