2011-03-09 49 views
0

存儲大圖我甲肝書面這是繼代碼...如何通過J2ME

package hello; 

import javax.microedition.midlet.*; 

import javax.microedition.lcdui.*; 

import java.io.*; 


public class Immutable extends MIDlet implements CommandListener { 

private Display display; 

private Form form; 

private Command exit; 

private Image image; 

private ImageItem imageItem; 

public Immutable() throws IOException 

{ 

display = Display.getDisplay(this); 

exit = new Command("Exit", Command.EXIT, 1); 

form = new Form("Immutable Image Example"); 

form.addCommand(exit); 

form.setCommandListener(this); 

try 

{ 

image = Image.createImage("/hello/minion.png"); 

imageItem = new ImageItem("This is the IMAGE_ITEM Application", 

image,ImageItem.LAYOUT_NEWLINE_BEFORE |ImageItem.LAYOUT_LEFT | 

ImageItem.LAYOUT_NEWLINE_AFTER, "My Image"); 

form.append(imageItem); 

} 


catch (java.io.IOException error) 

{ 

Alert alert = new Alert("Error", "Cannot load minion.png.",null, null); 

alert.setTimeout(Alert.FOREVER); 

alert.setType(AlertType.ERROR); 

display.setCurrent(alert); 

} 

} 

    public void startApp() 
{ 

     display.setCurrent(form); 
    } 

    public void pauseApp() { 
    } 

    public void destroyApp(boolean unconditional) { 
    } 
    public void commandAction(Command command, Displayable Displayable) 
{ 

if (command == exit) 

{ 

destroyApp(false); 

notifyDestroyed(); 

} 
} 
} 

現在這個形象命名minion.png爲32KB,像素尺寸爲803x825的。在這種情況下,圖像沒有完全加載。我已經在仿真器上嘗試過,也在諾基亞3110上試過。它給出的錯誤是「內存不足」。

同樣的事情與另一個大小6kb和像素96x96的圖像很好地運行。

請提出一些想法來存儲一個大的圖像。 thnx提前...

回答

1

首先,您不是通過此代碼存儲任何圖像,只是顯示。

現在所有的移動設備都有內存限制。如果設備在任何情況下內存不足,都無法加載這個大圖像。

您需要將其縮小並加載較小版本的圖像。

+0

我的移動設備有256mb的毫米卡,但仍顯示相同的錯誤。實際上我想做一個城市導航項目,因爲一個大的圖像是一個需求。 PLZ幫助我。 – user651109 2011-03-09 15:06:14

+0

256MB是你在存儲方面,但是miage正在加載到內存中,這絕對是很少的 – 2011-03-09 15:56:41

+0

所以沒有任何方式來顯示50kb大小的圖像?甚至模擬器不是加載整個圖像,只是邊界。 – user651109 2011-03-09 16:11:19

0

你需要使用(http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/lcdui/Image.html)