Lejos NXT:绘制线条并保存图像

时间:2016-03-14 21:25:04

标签: java lejos-nxj

我设法制作LineFollower程序;增加了“记忆”机器人刚刚遵循的路径的功能。 下一步是绘制该路径并将图像文件保存在砖块中,并使用NxjBrowse在PC中读取。 我以为我会尝试使用经典的java方法,使用BufferedImage并使用ImageIO保存,但它不起作用并且它一直给我Java堆空间: My previous question

之后,我做了一些研究,发现有一个名为javax.microedition.lcdui.Image的类,所以我创建了一个Image对象并使用了GetGraphics并尝试绘制它;并使用FileOutputStream保存它,这是我的代码:

Image img = Image.createImage(300, 300);

Graphics g = img.getGraphics();
g.drawLine(0, 0,  100, 200);

File monFichier = new File("Image2.png");
FileOutputStream fOut = null;

try {
    fOut = new FileOutputStream(monFichier);
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
byte[] b = img.getData();
try {
    fOut.write(b);
    fOut.close();

} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

问题是当我连接到我的电脑时,它写在未被识别为图像的文件上;我无法打开创建的文件(检查大小,不是空的)。 我不知道保存是错误的还是我用来绘制的方法是错误的。 问题的简短版本:如何使用Lejos绘制线条并将结果保存为图像文件? 谢谢。

更新

我使用了ImageOutputStream而不是FileOutputStream;现在它给了我“Java Heap Space”错误;在它被“连接”了一段时间之后。

Java Heap Space
Java.lang.OutOfMemoryError

1 个答案:

答案 0 :(得分:0)

Image.getData()是对底层DataBuffer的访问,而不是有效的PNG或BMP图像。 试试ImageIO.write(img,“png”,outputfile)。