8

Swing を使用して UI を作成しており、画像をJLabel. 私が使用するコードは次のとおりです。

 JLabel label = new JLabel(new ImageIcon(ImageIO.read(new File("img.jpg"))));

pngこれは、画像を使用する場合は正常に機能しますが、 jpg(一部のみ) になると、赤みがかった画像 (Paint.NET で表示されるものとは異なるもの) が得られます。私が使用した画像はこれです:img.jpg

だから私は(代替として)試しました:

Toolkit.getDefaultToolkit().createImage(new File("img.jpg").getAbsolutePath());
  1. なぜこれが起こっているのか誰にも分かりますか?サポートされていない特殊なJPEGフォーマットですか?
  2. このフォーラムで、ほとんどの人が ImageIO の使用を推奨していることを読みました (たとえば、こちら)。なんで?

どうもありがとう

4

2 に答える 2

5

ImageIO.read でバグを発見したようです... (私は赤い色合いを再現できますが、本来あるべき姿ではありません)。

あなたはしようとすることができます

  • 他の設定で JPEG ファイルを保存する
  • 他のプログラムでファイルを開く/再保存します (より一般的な JPEG エンコーディングを取得することを望んでいます)
  • または Toolkit メソッドを使用します (画像を制御しない場合)。

Toolkit メソッドの唯一の問題は、getImage() メソッドが呼び出された直後に戻り、読み込みがバックグラウンド スレッドで行われるため、すぐに Image オブジェクトの操作を開始できないことです。

于 2012-08-20T17:25:55.290 に答える