2012-02-20 103 views
0

我有顯示PNG圖像的問題,因爲JPG圖像顯示完美。在J2me中顯示PNG圖像

下面是獲取圖像的代碼。

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) 
+1

什麼例外? – npinti 2012-02-20 12:46:24

+1

發佈您的錯誤 – subodh 2012-02-20 12:47:33

+0

空指針異常 – 2012-02-20 12:47:59

回答

0

按照Image.createImage的JavaDoc,該方法引發一個exc它必須是因爲源字符串爲空。這似乎並非如此。這可能是您的MIDPCLDC版本的問題。

您可以嘗試使用Image.createImage的其他實現,例如this之一。

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。

我希望這會有所幫助。

+0

顯示java.lang.NullPointerException: 在start.SplashScreen.paint(56)產生java.io.IOException \t在javax.microedition.lcdui.ImmutableImage.getImageFromStream(15) \t在javax.microedition.lcdui.ImmutableImage。 (+20) – 2012-02-20 13:02:07