2008-10-28 10 views
5

Ich versuche eine Bildaufnahme auf einem High-End-Nokia-Handy (N95) zu machen. Die interne Kamera des Telefons ist sehr gut (4 Megapixel), aber in j2me scheint ich nur in der Lage zu sein, ein Maximum von 1360x1020 Bild heraus zu bekommen. Ich zeichnete weitgehend von diesem Beispiel http://developers.sun.com/mobility/midp/articles/picture/Kamera-Zugriff mit voller Auflösung in j2me

Was ich tat, war mit 640x480 beginnen und die Breite und Höhe um 80 bzw. 60 erhöhen, bis es fehlschlug. Die Codezeile ist:

jpg = mVideoControl.getSnapshot ("encoding = & JPEG quality = 100 & width =" + Breite + "& height =" + Höhe);

Also die zwei Probleme sind: 1. Das Telefon löst eine Ausnahme, wenn ein Bild größer als 1360x1020. 2. Die Bilder mit höherer Auflösung scheinen nur geglättete Versionen der kleineren Bilder zu sein. Z.B. Wenn ich ein 640x480 Bild nehme und es in Photoshop vergrößere, kann ich den Unterschied zwischen diesem und einem, der angeblich 1360x1020 ist, nicht unterscheiden.

Ist dies eine Einschränkung von j2me am Telefon? Wenn ja, kennt jemand eine Möglichkeit, eine höhere Auflösung aus einer j2me-Anwendung zu erhalten und/oder auf die native Kamera aus einer anderen Anwendung zuzugreifen?

Antwort

6

Diese explanation auf Nokia Forum Ihnen helfen kann.

Es besagt, dass "Die maximale Bildgröße, die erfasst werden kann, hängt vom ausgewählten Bildformat, den Kodierungsoptionen und dem verfügbaren freien Heapspeicher ab."

und

„Es so stark ist adviced, dass zumindest größere Bilder (größer als 1mpix) werden als JPEG-Bilder aufgenommen und in einer gemeinsamen Bildgröße (zB 1600x1200 für 2mpix so auf). Unterstützt gängigen Größen Bild sind abhängig von Produkt- und Plattformversion. "

Also ich empfehle Ihnen, einige Versuche zu nehmen 1. mit 1600x1200, 1024x768 und was auch immer Bildauflösung Ihr N95 Handbuch erwähnt 2. mit BMP und PNG sowie.

Wie auch immer, basierend auf meinen früheren Erfahrungen (die veraltet sein könnten), sind die j2me-Implementierungen voller Fehler, so dass es möglicherweise keine funktionierende Lösung für Ihr Problem gibt.

1

Die "Qualität" eines JPEG (wie vom Code interpretiert) hat nichts mit der Auflösung zu tun. Es hat vielmehr damit zu tun, wie komprimiert das Bild ist. Ein Bild mit der Qualität 640x480 in der Qualität 100 wird deutlich besser aussehen als das Bild in der Größe 640x480 bei 50, benötigt aber mehr Speicherplatz.

Versuchen Sie stattdessen:

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

Danke für die Hilfe, aber das schafft ein anderes Problem (siehe Bearbeiten). – Cory

3

Ihre Kameraauflösung ist nativ: 2582 x 1944. Versuchen Sie, dort festzuhalten, um zu sehen, wie das geht.

Dieser Ort: http://developers.sun.com/mobility/midp/articles/picture/index.html

Mentions die Verwendung von:

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

Die Verwendung von rohen scheint interessant, die native Auflösung zu erhalten.