5

我正在尝试在高端诺基亚手机 (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 的图像并在 Photoshop 中将其放大时,我无法区分这与所谓的 1360x1020 之间的区别。

这是手机上j2me的限制吗?如果是这样,是否有人知道从 j2me 应用程序中获得更高分辨率的方法和/或如何从另一个应用程序中访问本机相机?

4

3 回答 3

6

诺基亚论坛上的这个解释可能会对您有所帮助。

它说“可以捕获的最大图像大小取决于所选的图像格式、编码选项和可用的可用堆内存。”

“因此强烈建议至少将较大的图像(大于 1mpix)捕获为 JPEG 图像并以通用图像尺寸(例如 1600x1200 用于 2mpix 等)。支持的通用图像尺寸取决于产品和平台版本。”

因此,我建议您尝试 1. 使用 1600x1200、1024x768 以及您的 N95 指南中提到的任何图像分辨率 2. 使用 BMP 和 PNG。

无论如何,根据我之前的经验(可能已经过时),j2me 实现充满了错误,因此可能没有有效的解决方案来解决您的问题。

于 2008-12-02T14:40:34.550 回答
3

您的相机分辨率本机为: 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 似乎很有趣,以获得原始分辨率。

于 2008-12-07T08:57:18.653 回答
1

JPEG 的“质量”(由代码解释)与分辨率无关。相反,它与图像的压缩程度有关。质量为 100 的 640x480 图像明显优于质量为 50 的 640x480 图像,但会占用更多存储空间。

试试这个:

jpg = mVideoControl.getSnapshot("encoding=jpeg&quality=100&width=2048&height=1536");
于 2008-10-28T08:48:10.633 回答