Resolución completa de acceso a la cámara en j2me
Pregunta
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 un máximo de 1360x1020 de imagen. Tomé mucho de este ejemplo http://developers.sun.com/mobility/midp / articles / picture /
Lo que hice fue comenzar con 640x480 y aumentar el ancho y la altura en 80 y 60, respectivamente, hasta que falló. La línea de código es:
jpg = mVideoControl.getSnapshot (" encoding = jpeg & amp; quality = 100 & amp; width = " + width + " & amp; height = " + height);
Entonces los dos problemas son: 1. El teléfono lanza 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 puedo distinguir la diferencia entre esta y una que supuestamente es 1360x1020.
¿Es esta una limitación de j2me en el teléfono? Si es así, ¿alguien sabe 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?
Solución
Este en el foro de Nokia puede ayudarte.
Dice que " El tamaño máximo de imagen que se puede capturar depende del formato de imagen seleccionado, las opciones de codificación y la memoria de almacenamiento disponible. "
y
" Por lo tanto, se recomienda encarecidamente que al menos las imágenes más grandes (más de 1mpix) se capturen como imágenes JPEG y en un tamaño de imagen común (por ejemplo, 1600x1200 para 2mpix y así sucesivamente). Los tamaños de imagen comunes admitidos dependen de la versión del producto y la plataforma. & Quot;
Así que te sugiero que pruebes 1. con 1600x1200, 1024x768 y cualquier resolución de imagen que mencione su guía N95 2. con BMP y PNG también.
De todos modos, según mis experiencias anteriores (que podrían estar desactualizadas), las implementaciones de j2me están llenas de errores, por lo que es posible que no haya una solución funcional para su problema.
Otros consejos
La resolución de su cámara es nativa: 2582 x 1944. Intenta capturar allí para ver cómo va.
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 raw parece interesante, para obtener la resolución nativa.
La 'calidad' de un JPEG (según la interpretación del código) no tiene nada que ver con la resolución. Más bien, tiene que ver con la compresión de la imagen. Una imagen de 640x480 con calidad 100 se verá notablemente mejor que una imagen de 640x480 con 50, pero utilizará más espacio de almacenamiento.
Prueba esto en su lugar:
jpg = mVideoControl.getSnapshot("encoding=jpeg&quality=100&width=2048&height=1536");