2008-10-28 20 views
5

Próbuję wykonać przechwytywanie obrazu w wysokiej jakości telefonie Nokia (N95). Wewnętrzna kamera telefonu jest bardzo dobra (4 megapiksele), ale w j2me wydaje mi się, że mogę uzyskać obraz maksymalnie 1360x1020. W dużej mierze zaczerpnąłem z tego przykładu: http://developers.sun.com/mobility/midp/articles/picture/Dostęp do kamery w pełnej rozdzielczości w j2me

Co zrobiłem, zacząłem od 640x480 i zwiększałem szerokość i wysokość odpowiednio o 80 i 60, aż do zera. Linia kodu:

JPG = mVideoControl.getSnapshot ("Kodowanie = JPEG & jakość = 100 & szerokość =" + szerokość + "& wysokość =" + wysokość);

Oto dwie kwestie: 1. Telefon zgłasza wyjątek podczas uzyskiwania obrazu większego niż 1360x1020. 2. Obrazy o wyższej rozdzielczości wydają się być tylko wygładzonymi wersjami mniejszych. Na przykład. Kiedy robię obraz o wymiarach 640x480 i zwiększam go w Photoshopie, nie mogę stwierdzić różnicy między tym a tym, który ma podobno 1360x1020.

Czy to ograniczenie j2me w telefonie? Jeśli tak, czy ktoś wie, w jaki sposób uzyskać wyższą rozdzielczość z poziomu aplikacji j2me i/lub jak uzyskać dostęp do kamery rodzimej z poziomu innej aplikacji?

Odpowiedz

6

Ten explanation na Nokia forum może pomóc.

Mówi, że "Maksymalny rozmiar obrazu, który można przechwycić, zależy od wybranego formatu obrazu, opcji kodowania i dostępnej wolnej pamięci sterty."

i

„Jest zatem silnie adviced że przynajmniej większe obrazy (większe niż 1mpix) są ujęte jako obrazy JPEG w rozmiarze wspólnego obrazu (np 1600x1200 dla 2mpix w tak dalej). Obsługiwane wspólne rozmiary obrazu są zależne od wersji produktu i platformy. "

Dlatego sugeruję, abyś spróbował 1. z 1600x1200, 1024x768 i niezależnie od rozdzielczości obrazu, którą twój przewodnik N95 wymienia 2. z BMP i PNG.

W każdym razie, na podstawie moich wcześniejszych doświadczeń (które mogą być nieaktualne), implementacje j2me są pełne błędów, więc może nie być działającego rozwiązania twojego problemu.

1

"Jakość" pliku JPEG (zgodnie z interpretacją kodu) nie ma nic wspólnego z rozdzielczością. Raczej chodzi o to, jak skompresowany jest obraz. Obraz o rozdzielczości 640 x 480 o jakości 100 będzie lepiej wyglądał niż obraz o wymiarach 640 x 480 w wieku 50, ale użyje więcej miejsca w pamięci.

Spróbuj to zamiast:

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

Dzięki za pomoc, ale to stwarza kolejny problem (patrz edycja). – Cory

3

Rozdzielczość kamer jest natywnie: 2582 x 1944. Spróbuj przechwycić tam, aby zobaczyć, jak to działa.

to miejsce: http://developers.sun.com/mobility/midp/articles/picture/index.html

Wzmianki użycia:

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

Zastosowanie RAW wydaje się interesująca, aby uzyskać natywną rozdzielczość.