2016-03-14 67 views
1

我設法做了一個LineFollower程序;增加了「記憶」機器人剛剛遵循的路徑的功能。 下一步是繪製該路徑並將圖像文件保存在磚塊中,並使用NxjBrowse將其讀取到PC中。 我想我會嘗試採用了經典的Java方法,用的BufferedImage與ImageIO的儲蓄,但它沒有工作,它不停地給我的Java堆空間: My previous questionLejos NXT:畫線和保存圖像

在那之後,我做了一些研究並發現有一個名爲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畫線並將結果保存爲圖像文件? 謝謝。

UPDATE:

我用一個ImageOutputStream代替FileOutputStream中的;現在它給了我「Java堆空間」的錯誤;它陷入了「連接」一段時間之後。

Java Heap Space 
Java.lang.OutOfMemoryError 
+0

你刷新並關閉文件了嗎? – Gliderman

+0

解決了「空文件」問題,原來我忘了關閉它,謝謝。 但不幸的是;創建一個圖像文件並不是正確的想法;即使它是.png;它不被識別爲「圖像」... – user52713

回答

0

Image.getData()是對基礎DataBuffer的訪問,而不是有效的PNG或BMP圖像。 嘗試ImageIO.write(img,「png」,outputfile)。

+0

謝謝。但我試過了。它給了我Java堆空間錯誤。 – user52713