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 11/11/14, 22:29:02
Array

[xs_avatar]
fernandinho_90 fernandinho_90 no está en línea
Miembro del foro
 
Fecha de registro: sep 2014
Mensajes: 32
Tu operador: Movistar

Problema con imágenes

Hola,

quiero convertir una imagen a string para enviarlo mediante JSONObject a un servidor. Mi problema es que cuando trato de hacer esto me sale el siguiente error: java.lang.outofmemoryerror. Lo que hago es: una imagen (foto sacada con el celular 8MP) que la dejé en la carpeta drawable, convertirla a Bitmap y luego ésta la paso a string ocupando base64. En cambio este problema no ocurre con la imagen ic_launcher que viene por defecto pero sí con la foto tomada desde el celular ¿alguna solución a esto?

muchas gracias como siempre,

Saludos!

Última edición por fernandinho_90 Día 16/11/14 a las 05:56:36. Razón: error en el mensaje
Responder Con Cita


  #2  
Viejo 16/11/14, 06:34:01
Array

[xs_avatar]
fernandinho_90 fernandinho_90 no está en línea
Miembro del foro
 
Fecha de registro: sep 2014
Mensajes: 32
Tu operador: Movistar

La idea es: desde la app tomar una fotografía con la cámara del celular, guardarla y enviarla a un servidor mediante un JSON. ¿Se puede?
Responder Con Cita
  #3  
Viejo 16/11/14, 11:54:35
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
No puedes convertir una foto de 8 MP directamente a Bitmap, porque te pasará lo que te está pasando, que te quedarás sin memoria.

La máquina virtual de Java sólo gestiona al mismo tiempo entre 30 MB y 50 MB, dependiendo del móvil, si te pasas del tamaño asociado desbordas la memoria y la aplicación se muere. Una foto de 8MP convertida a Bitmap son más de 30 MB.

Soluciones al Bitmap:

1) ¿Para qué quieres mostrar una imagen de 8 MP en el móvil si no se va a apreciar? Comprímela mientras la conviertes a Bitmap.

2) Esta limitación no existe si lo haces con el NDK, así que si aún así quieres mostrar la imagen en 8 MP tendrás que hacerlo con una NativeActivity y programarlo todo con OpenGL. No se si teniendo la imagen direccionada en la memoria de C++ puedes pasarla a un ImageView, pero mucho me temo que en ese caso pasará a ocupar memoria Java y tendrás el mismo problema, pero no se, puedes probarlo.

En cuanto al String en Base64, 3/4 de lo mismo, el String en sí no puede ocupar más de 30 MB. Supongo que la imagen estará en JPEG y no será un RAW puro, en este caso no debería darte problemas, pero si aún así el String con la imagen entera ocupa más del límite de memoria, tendrás que enviarla a "cachos".

Última edición por kriogeN Día 16/11/14 a las 11:57:49.
Responder Con Cita
  #4  
Viejo 17/11/14, 02:43:01
Array

[xs_avatar]
fernandinho_90 fernandinho_90 no está en línea
Miembro del foro
 
Fecha de registro: sep 2014
Mensajes: 32
Tu operador: Movistar

Algunas dudas

 Cita: Originalmente Escrito por kriogeN Ver Mensaje
No puedes convertir una foto de 8 MP directamente a Bitmap, porque te pasará lo que te está pasando, que te quedarás sin memoria.

La máquina virtual de Java sólo gestiona al mismo tiempo entre 30 MB y 50 MB, dependiendo del móvil, si te pasas del tamaño asociado desbordas la memoria y la aplicación se muere. Una foto de 8MP convertida a Bitmap son más de 30 MB.

Soluciones al Bitmap:

1) ¿Para qué quieres mostrar una imagen de 8 MP en el móvil si no se va a apreciar? Comprímela mientras la conviertes a Bitmap.

2) Esta limitación no existe si lo haces con el NDK, así que si aún así quieres mostrar la imagen en 8 MP tendrás que hacerlo con una NativeActivity y programarlo todo con OpenGL. No se si teniendo la imagen direccionada en la memoria de C++ puedes pasarla a un ImageView, pero mucho me temo que en ese caso pasará a ocupar memoria Java y tendrás el mismo problema, pero no se, puedes probarlo.

En cuanto al String en Base64, 3/4 de lo mismo, el String en sí no puede ocupar más de 30 MB. Supongo que la imagen estará en JPEG y no será un RAW puro, en este caso no debería darte problemas, pero si aún así el String con la imagen entera ocupa más del límite de memoria, tendrás que enviarla a "cachos".
Hola, gracias por responder pero me surgieron algunas dudas:

1) Yo no quiero mostrar la imagen 8 MP en el móvil y quiero que ojalá no pierda su calidad para que ésta se aprecie de la mejor manera en el pc servidor. ¿Si la comprimo, consigo que la imagen no se "deteriore"?¿Cómo la comprimo?

2) ¿Qué es NDK?

3) ¿Algún ejemplo de cómo enviar la imagen a "cachos"? Mi idea es enviar varias fotos (tomadas con el celular) desde la app a un servidor.

Saludos.
Responder Con Cita
Respuesta

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



Hora actual: 17:36:08 (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 / 邮件联系 /