如何通过J2ME存储大图像

时间:2011-03-09 07:39:20

标签: java java-me out-of-memory

我写了一个跟随......的代码。

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提前...

3 个答案:

答案 0 :(得分:1)

首先,您不是通过此代码存储任何图像,只是显示。

现在所有移动设备都有内存限制。如果您的设备在任何情况下内存不足,则无法加载此大图像。

您需要将其缩小并加载较小版本的图片。

答案 1 :(得分:0)

您需要使用(http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/lcdui/Image.html)调整图像大小

答案 2 :(得分:0)