1

我设法制作了一个 LineFollower 程序;添加了“记忆”机器人刚刚走过的路径的功能。下一步是绘制该路径并将图像文件保存在砖中,然后使用 NxjBrowse 在 PC 中读取它。我想我会尝试使用经典的 java 方法,使用 BufferedImage 并使用 ImageIO 保存,但它没有用,它一直给我 Java 堆空间: 我以前的问题

之后,我做了一些研究,发现有一个名为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堆空间”错误;在它陷入“链接”一段时间之后。

Java Heap Space
Java.lang.OutOfMemoryError
4

1 回答 1

0

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

于 2016-03-15T16:38:50.247 回答