2008-10-28 10 views
5

Estoy intentando hacer una captura de imagen en un teléfono Nokia de gama alta (N95). La cámara interna del teléfono es muy buena (4 megapíxeles), pero en j2me parece que solo puedo obtener una imagen máxima de 1360x1020. Dibujé en gran parte de este ejemplo http://developers.sun.com/mobility/midp/articles/picture/Acceso a cámara a resolución completa en j2me

Lo que hice fue comenzar con 640x480 y aumentar el ancho y alto en 80 y 60, respectivamente hasta que falló. La línea de código es:

jpg = mVideoControl.getSnapshot ("encoding = jpeg & calidad = 100 & width =" + ancho + "& height =" + altura);

Por lo tanto, los dos problemas son: 1. El teléfono arroja una excepción cuando se obtiene una imagen de más de 1360x1020. 2. Las imágenes de mayor resolución parecen ser versiones suavizadas de las más pequeñas. P.ej. Cuando tomo una imagen de 640x480 y la aumento en Photoshop, no veo la diferencia entre esto y uno que supuestamente es de 1360x1020.

¿Esto es una limitación de j2me en el teléfono? Si es así, ¿alguien sabe de una forma de obtener una resolución más alta desde una aplicación j2me y/o cómo acceder a la cámara nativa desde otra aplicación?

Respuesta

6

Este explanation en el foro Nokia puede ayudarle.

Dice que "El tamaño de imagen máximo que se puede capturar depende del formato de imagen seleccionado, las opciones de codificación y la memoria de pila gratuita disponible".

y

"Por lo tanto, se aconsejó fuertemente que las imágenes al menos más grandes (más grandes que 1mpix) se capturan como imágenes JPEG y en un tamaño de la imagen común (por ejemplo 1600x1200 para 2Mpix un etc.). Tamaños de imagen comunes dependen de la versión del producto y la plataforma ".

Así que le sugiero que tome algunos intentos 1. con 1600x1200, 1024x768 y cualquier resolución de imagen su guía N95 menciona 2. con BMP y PNG también.

De todos modos, en base a mis experiencias anteriores (que podrían estar desactualizadas), las implementaciones de j2me están llenas de errores, por lo que puede que no haya una solución que funcione para su problema.

1

La 'calidad' de un JPEG (según lo interpreta el código) no tiene nada que ver con la resolución. Más bien tiene que ver con qué tan comprimida está la imagen. Una imagen de 640x480 con una calidad de 100 tendrá una apariencia notablemente mejor que una imagen de 640x480 a 50, pero usará más espacio de almacenamiento.

Tal vez puedas probar:

jpg = mVideoControl.getSnapshot("encoding=jpeg&quality=100&width=2048&height=1536"); 
+0

Gracias por la ayuda, pero esto crea otro problema (ver edición). – Cory

3

La resolución de su cámara es nativa: 2582 x 1944. Intenta capturar allí para ver cómo va eso.

Este lugar: http://developers.sun.com/mobility/midp/articles/picture/index.html

menciona el uso de:

byte[] raw = mVideoControl.getSnapshot(null); 
Image image = Image.createImage(raw, 0, raw.length); 

El uso de las materias primas parece interesante, para obtener la resolución nativa.

Cuestiones relacionadas