Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 18/02/14, 14:02:10
Array

[xs_avatar]
canogt canogt no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Localización: Tenerife
Mensajes: 168
Modelo de smartphone: lg g3
Tu operador: Vodafone
Problema imagen pixelada al guardala

Buenas tardes a todos,

A ver si alguien me puede echar una manita..
tengo un problema cuando recupero una foto de la galería o de la cámara y la guardo en la carpeta de mi aplicación.

Una vez guardada, cuando la recupero para visualizarla me aparece la imagen muy pixelada, ha perdido muchísima calidad y la letras son ilegibles.

Dejo el código que uso a ver si alguien me puede iluminar un poco.

...........
.......
try{
if (requestCode == SELECT_IMAGE)
if (resultCode == Activity.RESULT_OK) {
Uri selectedImage = data.getData();

if (selectedImage != null) {
image_view.setImageBitmap(getScaledBitmap(selected Image));
thumbnail = getScaledBitmap(selectedImage);
}
} else if (resultCode == Activity.RESULT_CANCELED) {
Toast.makeText(getBaseContext(), "Se ha cancelado la seleccion de foto " ,Toast.LENGTH_SHORT).show();
}
if(requestCode == TAKE_PICTURE)
if(resultCode == Activity.RESULT_OK){
Uri selectedImage = data.getData();
thumbnail = (Bitmap) data.getExtras().get("data");
image_view.setImageBitmap(thumbnail);
}
else if (resultCode == Activity.RESULT_CANCELED) {
Toast.makeText(getBaseContext(), "Se ha cancelado la captura de foto " ,Toast.LENGTH_SHORT).show();
}
} catch(Exception e){}
}

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

Y en otra parte del programa actúo con las variables que he cargado en este código


file = new File(folder,String.valueOf(NombreFoto) + ".jpg");
OutputStream f = null;
try {
f = new FileOutputStream(file);
thumbnail.compress(Bitmap.CompressFormat.PNG, 100, f);
f.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
}
}

Se que estoy comprimiendo la foto pero al darle al valor 100 no se guarda con buena calidad?
no he visto que la gente que use este método se queje de una perdida de calidad tan brutal como la que yo tengo.

Muchas gracias compis.
Responder Con Cita


  #2  
Viejo 18/02/14, 14:05:26
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
La parte importante aquí y que no has puesto es lo que hace getScaledBitmap(selectedImage), ahí es donde puede ser que estés perdiendo calidad.

¿Puedes poner el código?

Y por cierto, la imagen que obtienes de la cámara es siempre de baja calidad (al menos si el desarrollo de la app de cámara se ajusta a lo que especifica Google, hay algunas como Camara360 que si la devuelven con buena calidad). Para obtenerla con buena calidad tienes que pasarle un fichero donde quieras que se almacene la foto, y luego en el onActivityResult abrir directamente ese fichero.

Última edición por kriogeN Día 18/02/14 a las 14:09:42.
Responder Con Cita
  #3  
Viejo 18/02/14, 14:17:50
Array

[xs_avatar]
canogt canogt no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Localización: Tenerife
Mensajes: 168
Modelo de smartphone: lg g3
Tu operador: Vodafone
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
La parte importante aquí y que no has puesto es lo que hace getScaledBitmap(selectedImage), ahí es donde puede ser que estés perdiendo calidad.

¿Puedes poner el código?

Y por cierto, la imagen que obtienes de la cámara es siempre de baja calidad (al menos si el desarrollo de la app de cámara se ajusta a lo que especifica Google, hay algunas como Camara360 que si la devuelven con buena calidad). Para obtenerla con buena calidad tienes que pasarle un fichero donde quieras que se almacene la foto, y luego en el onActivityResult abrir directamente ese fichero.
Gracias kriogeN, cuando ande por casa reviso el coódigo de getScaledBitmap y lo copio.

Con respecto a la cámara podría actuar de la siguiente manera?
hacer la foto, copiar físicamente el achivo foto que genera la cámara , copiarlo en mi carpeta y ahí de alguna manera tratarlo para que ocupe menos?.

Es que no se como se suele trabajar con las imágenes ...

Muchas gracias por tu tiempo
Responder Con Cita
  #4  
Viejo 18/02/14, 17:03:05
Array

[xs_avatar]
canogt canogt no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Localización: Tenerife
Mensajes: 168
Modelo de smartphone: lg g3
Tu operador: Vodafone
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
La parte importante aquí y que no has puesto es lo que hace getScaledBitmap(selectedImage), ahí es donde puede ser que estés perdiendo calidad.

¿Puedes poner el código?

Y por cierto, la imagen que obtienes de la cámara es siempre de baja calidad (al menos si el desarrollo de la app de cámara se ajusta a lo que especifica Google, hay algunas como Camara360 que si la devuelven con buena calidad). Para obtenerla con buena calidad tienes que pasarle un fichero donde quieras que se almacene la foto, y luego en el onActivityResult abrir directamente ese fichero.
Copio el código

private Bitmap getScaledBitmap(Uri uri){
Bitmap thumb = null ;
try {
ContentResolver cr = getContentResolver();
InputStream in = cr.openInputStream(uri);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize=8;
thumb = BitmapFactory.decodeStream(in,null,options);
} catch (FileNotFoundException e) {
Toast.makeText(getBaseContext(), "Archivo no encontrado " ,Toast.LENGTH_SHORT).show();
}
return thumb ;
}


Un saludo
Responder Con Cita
  #5  
Viejo 18/02/14, 19:04:48
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
El problema lo tienes en el inSampleSize = 8, le estás diciendo que te de una imagen 8 veces inferior. Es decir, si tu imagen es de 1024x768 la imagen final será de 128x96. Que viene siendo un tamaño de mierda.

Prueba quitando la línea.
Responder Con Cita
Gracias de parte de:
  #6  
Viejo 18/02/14, 19:48:00
Array

[xs_avatar]
canogt canogt no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Localización: Tenerife
Mensajes: 168
Modelo de smartphone: lg g3
Tu operador: Vodafone
Muchísimas gracias kriogeN, con eso tengo resuelto el problema de las fotos de la galería. Voy a investigar a ver si puedo solucionar el de la cámara
Gracias de nuevo

Última edición por canogt Día 19/02/14 a las 09:19:10.
Responder Con Cita
  #7  
Viejo 19/02/14, 09:22:50
Array

[xs_avatar]
canogt canogt no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Localización: Tenerife
Mensajes: 168
Modelo de smartphone: lg g3
Tu operador: Vodafone
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Y por cierto, la imagen que obtienes de la cámara es siempre de baja calidad (al menos si el desarrollo de la app de cámara se ajusta a lo que especifica Google, hay algunas como Camara360 que si la devuelven con buena calidad). Para obtenerla con buena calidad tienes que pasarle un fichero donde quieras que se almacene la foto, y luego en el onActivityResult abrir directamente ese fichero.

Al final lo de la cámara lo hice como me comentaste, pasandole el fichero donde tenia que escribir la imagen con el EXTRA_OUTPUT y luego la paso por mi método getScaledBitmap para
hacerla menos pesada.

Ahora tengo otro problema a ver si alguien le ha pasado, después de recuperar la imagen de la cámara y guardarla en la carpeta de mi aplicación, al mostrarla en un imageview en algunos móviles lo hace bien pero en otros no, por ejemplo en mi galaxy s3 me la deja rotada 90 º ...

Alguna idea?

Gracias.
Responder Con Cita
  #8  
Viejo 19/02/14, 09:35:56
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Eso es porque algunas aplicaciones de cámara no almacenan bien la rotación de la imagen, y entonces al abrirlas salen rotadas. Yo llevo trabajando 1 año en una aplicación de compartir fotografías y ya estos problemas me he enfrentado a todos.

Ahora cuando llegue a la oficina te posteo el código que uso yo para rotar correctamente la imagen.
Responder Con Cita
Gracias de parte de:
  #9  
Viejo 19/02/14, 12:47:29
Array

[xs_avatar]
canogt canogt no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Localización: Tenerife
Mensajes: 168
Modelo de smartphone: lg g3
Tu operador: Vodafone
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Eso es porque algunas aplicaciones de cámara no almacenan bien la rotación de la imagen, y entonces al abrirlas salen rotadas. Yo llevo trabajando 1 año en una aplicación de compartir fotografías y ya estos problemas me he enfrentado a todos.

Ahora cuando llegue a la oficina te posteo el código que uso yo para rotar correctamente la imagen.
Gracias KriogeN, he estado buscando información y he visto el problema pero poca información de como poder solucionarlo. Muchísimas gracias de nuevo por tu ayuda
Responder Con Cita
  #10  
Viejo 22/02/14, 14:12:34
Array

[xs_avatar]
canogt canogt no está en línea
Miembro del foro
 
Fecha de registro: nov 2012
Localización: Tenerife
Mensajes: 168
Modelo de smartphone: lg g3
Tu operador: Vodafone
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Eso es porque algunas aplicaciones de cámara no almacenan bien la rotación de la imagen, y entonces al abrirlas salen rotadas. Yo llevo trabajando 1 año en una aplicación de compartir fotografías y ya estos problemas me he enfrentado a todos.

Ahora cuando llegue a la oficina te posteo el código que uso yo para rotar correctamente la imagen.
Buenos días,

Podrías echarme una mano con esto? algún link o alguna idea para ir buscando, implemente un método que busca las orientaciones de las imágenes pero a veces me funciona y otras no. La verdad es que estoy atascado con esto

Un saludo y gracias
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 09:16:14 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /