2017-11-21 19 views
-4

byte []をBufferedImageに変換する際に問題があります。私は多くの投稿と質問 - 回答があることを知っていますが、私のコードが間違っている理由を知ることはできません。 (エラー:スレッド "main"の例外java.lang.IllegalArgumentException:image == null!)byte []をBufferedImageに変換する

ありがとう!

try { 
     String hex = "57656c636f6d652c206d7920667269656e642e"; 
     byte[] im = DatatypeConverter.parseHexBinary(hex); 
     InputStream in = new ByteArrayInputStream(im); 
     BufferedImage bImageFromConvert = ImageIO.read(in); 
     ImageIO.write(bImageFromConvert, "jpg", new File("c:/welcome.jpg")); 
    } catch (Exception ex) { 
    } 
+2

私は16進文字列をデコードして、 "Welcome、my friend"と言う。 ImageIO.read()は、JPGやPNGのようなファイルを読み込みます。あなたはアスキー文字列で何をすると思いますか? – slipperyseal

+0

テキストをイメージに変換するには、必要なサイズのバッファイメージを作成し、必要に応じて背景を塗りつぶし、色を設定し、フォントを設定してから文字列を描画する必要があります。あなたは何行かのコードでテキストをイメージに変換できません(とにかくJava標準ライブラリではありません) – slipperyseal

+0

あなたのコードが間違っている理由はわかりませんか?あなたのコードが正しいと想像することができますか? – Kayaman

答えて

0

私が正しくあなたを理解していれば、あなたはそれが存在しないNEWFILEをチェックする

File newfile = new File("c:/welcome.jpg"); 
newfile.exists(); 

を使用する必要があります。

+1

ファイルを書き込めません。なぜなら、「ようこそ、私の友人」を変換できないからです。画像に変換する。 ImageIO.read()がそうする前提は間違っています – slipperyseal

0

OK。私はスリップシールが話し、働いたことをしました。ありがとう。コードは以下の通りです。

try { 
     Font font = new Font("Arial", 0, 32); 
     BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB); 
     FontMetrics fm = img.getGraphics().getFontMetrics(font); 
     int width = fm.stringWidth("Welcome, my friend."); 
     int height = fm.getHeight(); 
     int padding = 7; 

     BufferedImage bgImage = new BufferedImage(width+padding*2, height, BufferedImage.TYPE_INT_ARGB); 

     Graphics2D drawer = bgImage.createGraphics() ; 
     drawer.setBackground(Color.white); 
     drawer.clearRect(0,0,(int)width+padding*2,(int)height); 
     drawer.setColor(Color.black); 
     drawer.setFont(font); 
     drawer.drawString("Welcome, my friend.", padding, height-padding); 

     ImageIO.write(bgImage, "png", new File("c:/welcome.png")); 

    } catch (IOException e) { 
      System.out.println(e.getMessage()); 
    } 

このコードに問題はありますか?悪い習慣のように...

+0

これはうまくいくかもしれませんが、質問との関連がわかりません。それをJPEGとして保存するのですか?」 – haraldK

関連する問題