2012-11-08 30 views
0

我有一個字符串,對此我將其轉換成字節[],然後我編寫代碼的時候帶回形象,但問題是,它沒有創造它回圖像文本文件,圖像轉換

   BufferedReader reader2 = new BufferedReader(new FileReader("e:\\imageinString.txt")); 
    String buffer, lined = ""; 

    while ((buffer = reader2.readLine()) != null) { 
     lined = lined + buffer; 
    } 

    byte[] byteArray = lined.getBytes("UTF-16"); 

    InputStream in = new ByteArrayInputStream(byteArray); 
    BufferedImage bImageFromConvert = ImageIO.read(in); 

    ImageIO.write(bImageFromConvert, "bmp", new File("e:\\ppp.bmp")); 
    reader2.close(); 

我得到這個錯誤,但我在控制檯上

 Exception in thread "main" java.lang.IllegalArgumentException: image == null! 
at javax.imageio.ImageTypeSpecifier.createFromRenderedImage(ImageTypeSpecifier.java:925) 
at javax.imageio.ImageIO.getWriter(ImageIO.java:1591) 
at javax.imageio.ImageIO.write(ImageIO.java:1520) 
at imagereading.Imagereading.main(Imagereading.java:47) 
+2

1)你不能指望'字符串'字節寫入圖像!您需要創建一個'BufferedImage',從圖像中獲取'Graphics'對象,將文本寫入該圖像,然後保存圖像。 2)爲什麼,*爲什麼,* ***爲什麼地球上的人們想把完美的文字轉化爲圖像? –

+0

即使將字符串轉換爲字節,字節內容仍然是字符串而不是圖像。它只是改變它的形式。 – Mawia

回答

3

得到這個這將幫助你。

BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR); 
Graphics2D g2 = image.createGraphics(); 
g2.drawString(s, x, y); 
... 
g2.dispose(); 
ImageIO.write(image, "jpg", file); 

或者,如果你更喜歡導出到PNG,那麼你可以有一個支持透明度的圖像。

BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR); 
+0

我認爲PNG對於文本圖像會更好。請參閱[本示例](http://stackoverflow.com/questions/5995798/java-text-on-image/5998015#5998015)進行比較。 –

+0

感謝您的建議。我更新了答案。 –

+0

@Dan請幫助我,我無法理解我必須從文本文件中獲取字符串的位置,以便將該字符串轉換爲圖像 – Xara