【问题标题】:Full Resolution Camera Access in j2mej2me 中的全分辨率相机访问
【发布时间】:2008-10-28 00:50:52
【问题描述】:

我正在尝试在高端诺基亚手机 (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 应用程序中获得更高分辨率的方法和/或如何从另一个应用程序中访问本机相机?

【问题讨论】:

    标签: java java-me mobile camera mmapi


    【解决方案1】:

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

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

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

    所以我建议你尝试一下 1. 使用 1600x1200、1024x768 以及 N95 指南中提到的任何图像分辨率 2. 也可以使用 BMP 和 PNG。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        试试这个:

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

        【讨论】:

        • 感谢您的帮助,但这会产生另一个问题(请参阅编辑)。
        猜你喜欢
        • 1970-01-01
        • 2014-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-27
        • 1970-01-01
        相关资源
        最近更新 更多