如何在J2ME中从大图像文件制作拇指?

时间:2010-04-18 15:04:11

标签: java image java-me thumbnails

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

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

1 个答案:

答案 0 :(得分:1)

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

如果您的图像打包在MIDlet JAR文件中,则您对MIDP运行时所执行的操作的控制较少,因为在将数据作为图像加载之前需要对数据进行解压缩。在这种情况下,我建议只包装一个较小的图像。减少像素数或用于编码每个像素的字节数。

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

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

根据图像的内容,只需移除一半像素列和一半像素线,可能正是您需要的,也可能是过于天真的方法。您可能希望查看现有的图像缩放算法并将其写入应用程序。

请记住,基本的LCDUI可能不是在屏幕上显示图像的唯一方法。 JSR-184,JSR-239,JSR-226和eSWT都可以让您以与手机LCDUI实现完全无关的方式实现这一目标。

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