Полный доступ к камере в j2me
Я пытаюсь сделать снимок на высоком телефоне Nokia (N95). Внутренняя камера телефона очень хорошая (4 мегапикселя), но в j2me мне кажется, что я могу вывести максимум 1360x1020 изображений. Я в основном опирался на этот пример http://developers.sun.com/mobility/midp/articles/picture/
Я начал с 640x480 и увеличил ширину и высоту на 80 и 60 соответственно, пока не потерпел неудачу. Строка кода:
jpg = mVideoControl.getSnapshot ("encoding = jpeg & quality = 100 & width =" + width + "& height =" + height);
Итак, две проблемы: 1. Телефон выдает исключение при получении изображения размером более 1360x1020. 2. Изображения с более высоким разрешением кажутся просто сглаженными версиями меньших. Например, когда я беру изображение 640x480 и увеличиваю его в фотошопе, я не могу сказать разницу между этим и тем, который предположительно 1360x1020.
Это ограничение j2me на телефоне? Если да, кто-нибудь знает, как получить более высокое разрешение из приложения j2me и / или как получить доступ к исходной камере из другого приложения?
3 ответа
Это объяснение на форуме Nokia может вам помочь.
В нем говорится, что "Максимальный размер изображения, который может быть захвачен, зависит от выбранного формата изображения, параметров кодирования и доступной свободной памяти кучи".
а также
"Поэтому настоятельно рекомендуется, чтобы как минимум изображения большего размера (более 1-мегапикселя) были записаны в виде изображений JPEG и с общим размером изображения (например, 1600x1200 для 2-мегапикселей и т. Д.). Поддерживаемые общие размеры изображения зависят от версии продукта и платформы".
Поэтому я предлагаю вам сделать несколько попыток 1. с разрешением 1600x1200, 1024x768 и любым разрешением изображения, указанным в руководстве N95, а также с BMP и PNG.
В любом случае, основываясь на моем предыдущем опыте (который может быть устаревшим), реализации j2me полны ошибок, поэтому, возможно, не будет рабочего решения вашей проблемы.
Ваше разрешение камеры изначально: 2582 x 1944 . Попробуйте захватить там, чтобы увидеть, как это происходит.
Это место: http://developers.sun.com/mobility/midp/articles/picture/index.html
Упоминает использование:
byte[] raw = mVideoControl.getSnapshot(null);
Image image = Image.createImage(raw, 0, raw.length);
Использование raw кажется интересным, чтобы получить собственное разрешение.
"Качество" JPEG (как интерпретируется кодом) не имеет ничего общего с разрешением. Скорее это связано с тем, насколько сжато изображение. Изображение 640x480 с качеством 100 будет заметно лучше, чем изображение 640x480 при 50, но будет занимать больше места для хранения.
Попробуйте это вместо этого:
jpg = mVideoControl.getSnapshot("encoding=jpeg&quality=100&width=2048&height=1536");