Toolkit.getDefaultToolkit() が AWTError をスローした場合、Java でどのように画像を読み取るのでしょうか?

StackOverflow https://stackoverflow.com/questions/119857

  •  02-07-2019
  •  | 
  •  

質問

私はJavaで画像ファイルを読んでいます

java.awt.Image img = Toolkit.getDefaultToolkit().createImage(filePath);

一部のシステムではこれが機能せず、代わりに sun/awt/motif/MToolkit に関する AWTError がスローされます。

他にどのようにして画像ファイルから java.awt.Image オブジェクトを作成できるでしょうか?

役に立ちましたか?

解決

を使用して画像を読み取ります 画像IO.

Image i = ImageIO.read(InputStream in);

javadoc にも詳細情報が記載されています。

他のヒント

ImageIO には、さまざまなソースから画像を読み取ることができる静的メソッドがいくつかあります。あなたの場合、最も興味深いのは次のとおりです。

BufferedImage read(ImageInputStream stream) 
BufferedImage read(File input)
BufferedImage read(InputStream input)

コード内を確認してみました。これは ImageReader 抽象クラスを使用しており、実装者は 3 つあります。JPEGリーダー。PNGリーダーとGIFリーダー。これらのクラスと BufferedImage は明らかにネイティブ メソッドを使用していないため、常に動作するはずです。

AWTErrorが発生するのは、ヘッドレス構成でJavaを実行しているか、Windowsツールキットに何らかの問題があることが原因であるようです。ただし、具体的なエラーを見ない限り、何とも言えません。この解決策では (おそらく) 画像を読み取ることができますが、画像をどのように処理するかによっては、後で画像を表示しようとすると AWTError がスローされる可能性があります。

一部のシステムでは、Java パラメータとして「-Djava.awt.headless=true」を追加すると役立つ場合があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top