【问题标题】:How to make a thumb from a big image file in J2ME?如何从 J2ME 中的大图像文件中制作拇指?
【发布时间】:2011-02-09 09:32:23
【问题描述】:

我正在尝试在 J2ME 应用程序中显示一个大图像文件。但是我发现当图像文件太大时,我什至无法创建 Image 实例并得到OutOfMemory 异常。

我想我可以读取小块的图像文件并创建一个缩略图显示给用户?
有没有办法做到这一点?或者有没有其他方法可以在应用程序中显示图像文件?
谢谢。

【问题讨论】:

    标签: java image java-me thumbnails


    【解决方案1】:

    有很多事情可以尝试,具体取决于您要尝试做什么以及您希望应用程序在什么手机上运行。

    如果您的图像打包在您的 MIDlet JAR 文件中,您对 MIDP 运行时所做的事情的控制较少,因为数据需要解压缩才能作为图像加载。在这种情况下,我建议简单地打包一个较小的图像。要么减少像素数,要么减少用于编码每个像素的字节数。

    如果您可以从基于 GCF 的 InputStream(文件、网络...)中读取图像字节,您需要了解图像格式(BMP 很简单,JPEG 不太...),以便您可以缩小它到一个可变的Image 对象中,它会占用更少的内存,一次一个块。

    在这种情况下,您还需要决定您的缩放算法应该是什么。如果您手机上的 LCDUI 实现写得不好,将文件中的 32 位像素转换为内存中的 8 位像素实际上可能无法正常工作。

    根据图像的内容,简单地删除一半像素列和一半像素行可能正是您所需要的,也可能是一种过于幼稚的方法。您可能想查看现有的图像缩放算法并将其写入您的应用程序。

    请记住,基本的 LCDUI 可能不是在屏幕上显示图像的唯一方式。 JSR-184、JSR-239、JSR-226 和 eSWT 都可以让您以完全独立于您的手机 LCDUI 实现的方式做到这一点。

    最后,让我们面对现实吧,如果您的手机 MIDP 运行时不允许您同时以全色深度创建至少 2 个屏幕大小的图像,那么可能是时候决定不支持该功能了特定的手机。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 1970-01-01
      相关资源
      最近更新 更多