2008-10-28 4 views
5

J'essaye de faire une capture d'image sur un téléphone haut de gamme Nokia (N95). L'appareil photo interne du téléphone est très bon (4 mégapixels) mais en j2me, je semble seulement être en mesure d'obtenir un maximum de 1360x1020 image. J'ai dessiné en grande partie de cet exemple http://developers.sun.com/mobility/midp/articles/picture/Full Resolution Camera Access en j2me

Ce que j'ai fait était de commencer par 640x480 et augmenter la largeur et la hauteur de 80 et 60, respectivement jusqu'à ce qu'il échoue. La ligne de code est le suivant:

jpg = mVideoControl.getSnapshot ("encoding = jpeg & & qualité = 100 width =" + largeur + "& hauteur =" + hauteur);

Les deux problèmes sont les suivants: 1. Le téléphone lève une exception lors de l'obtention d'une image supérieure à 1360x1020. 2. Les images à plus haute résolution semblent être des versions lissées des plus petites. Par exemple. Quand je prends une image 640x480 et que je l'agrandisse dans Photoshop, je ne peux pas faire la différence entre celle-ci et celle qui est censée être 1360x1020.

Est-ce une limitation de j2me sur le téléphone? Si oui, quelqu'un sait-il comment obtenir une résolution plus élevée dans une application j2me et/ou comment accéder à la caméra native depuis une autre application?

Répondre

6

Ce explanation sur le forum Nokia peut vous aider. Il indique que "La taille d'image maximale qui peut être capturée dépend du format d'image sélectionné, des options d'encodage et de la mémoire libre disponible."

et

« Il est donc fortement conseillé que les images au moins grandes (plus de 1mpix) sont capturés sous forme d'images JPEG et une taille d'image commune (par exemple 1600x1200 pour 2Mpix une etc.). Supported tailles d'image communes dépendent de la version du produit et de la plateforme. "

Donc, je vous suggère de faire quelques essais 1. avec 1600x1200, 1024x768 et quelle que soit la résolution d'image votre guide N95 mentionne 2. avec BMP et PNG aussi bien.

Quoi qu'il en soit, en fonction de mes expériences antérieures (qui pourrait être dépassée), les mises en œuvre de J2ME sont pleins de bugs, il ne peut pas être une solution de travail à votre problème.

1

La 'qualité' d'un JPEG (tel qu'interprété par le code) n'a rien à voir avec la résolution. Il s'agit plutôt de savoir comment l'image est compressée. Une image 640x480 à 100 qualité sera visiblement meilleure qu'une image 640x480 à 50, mais utilisera plus d'espace de stockage.

Essayez ceci:

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

Merci pour l'aide, mais cela crée un autre problème (voir édition). – Cory

3

Votre résolution des caméras est nativement: 2582 x 1944. Essayez de capturer là pour voir comment cela se passe.

Ce lieu: http://developers.sun.com/mobility/midp/articles/picture/index.html

mentionne l'utilisation de:

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

L'utilisation des matières premières semble intéressant, pour obtenir la résolution native.