在J2me中显示Png图像

时间:2012-02-20 12:44:51

标签: java java-me midp lcdui

我有显示PNG图像的问题,因为JPG图像显示效果非常好。

以下是获取图片的代码。

Image tImage=Image.createImage("/tasbeeh.jpg");

然后绘制图像,但是对于png

Image tImage=Image.createImage("/tasbeeh.png");

抛出异常:

java.lang.NullPointerException:
at start.SplashScreen.paint(+56)
at javax.microedition.lcdui.Canvas.callPaint(+85)
at javax.microedition.lcdui.Display.repaint(+82)

java.io.IOException
at javax.microedition.lcdui.ImmutableImage.getImageFromStream(+15)
at javax.microedition.lcdui.ImmutableImage.<init>(+20)
at javax.microedition.lcdui.Image.createImage(+8) 

2 个答案:

答案 0 :(得分:1)

我假设你得到的异常是IllegalArgumentException,

如果第一个参数格式不正确或无法解码,则抛出IllegalArgumentException。

因此,您最有可能因图像格式不受支持或截断数据而收到错误。

<强>更新

http://www.ai.univ-paris8.fr/~djedi/j2me-xml/midp20-src/javax/microedition/lcdui/ImmutableImage.html#getImageFromStream(java.io.InputStream

<强> getImageFromStream 抛出: IOException - 如果流有错误

因此,来自该png的数据流未按预期格式化,就像我说的不支持的图像格式或截断的数据一样。

你应该尝试使用像paint.net或photoshop这样的图形程序,并保存为具有不同位格式的PNG。

我希望这会有所帮助。

答案 1 :(得分:0)

根据Image.createImage JavaDoc,对于抛出异常的方法,必须是因为源字符串为null。似乎并非如此。这可能是您的MIDPCLDC版本的问题。

您可以尝试使用Image.createImage的其他实现,例如this