2013-08-21 10 views
6

上記の回答は、私のカラー画像を白黒の画像に変換します。だから私の質問には適切ではない。IllegalArgumentException:ソースのRasterバンドと元の色空間コンポーネントの数が一致しないカラー画像の場合例外

File file = new File("path");   
BufferedImage bufferedImage = ImageIO.read(file); 

ここはコードです。以下は画像です。イメージをダウンロードし、あなたのPCに保存してください。そして、パスの正確な値を持つ上記のコードを実行しようと、それが話題に例外がスローされます

ダウンロード画像:https://skydrive.live.com/?cid=19547371C4F3B839&id=19547371C4F3B839%21105

だけの場合からjava.awt.image.BufferedImageオブジェクトを取得することができる人(イメージをグレースケールに変換すべきではありません)。

あなたがこれに答えることができるなら、あなたは天才です:D。 Plzヘルプ。

+0

可能重複http://stackoverflow.com/questions/10416378/imageio-read-illegal-argument-exception-raster-bands-colour-space-components –

+0

こんにちはフィリップはよく私の質問をお読みください。私は明確に "画像をグレースケール1に変換すべきではありません"と言いました。あなたが持っている答えは、あなたがそれを試して見てみたい場合は、グレースケール(黒と白)に私のカラー画像を変換することを示唆している。そして、他の質問を示唆せず、私に与えてはいけません - それを試してみてください。あなたのコメントを担当してください。 –

+0

@PhilippSander同様に、この画像の問題は、リンクしたものとは異なります。 – haraldK

答えて

15

ここでコードに問題はありません。私はJPEGImageReader ImageIOのプラグインを使用してあなたのイメージを読むことができました。このイメージリーダはJPEGエラーを寛容にしようとしており、標準のJava JPEGImageReaderよりもわずかに機能が優れています。

しかし、あなたのJPEGファイルは、それが100%を読み取ることができないので、多くの問題を持っているようだ:

  • まず、画像内のICCカラープロファイルは、画像データが、4色成分を持っています3つの色成分しかありません(これは例外を引き起こしています)。根本原因はおそらく悪い変換ソフトウェアです。 ExifToolまたは類似のソフトウェアを使用して、詳細な調査のためにメタデータを確認します。私の読者は単にICCプロフィールを無視するだけです。
  • 第2に、JPEGストリームが途中で終了します(EOIがありません)。あなたは、画像の右下にいくつかのゴミピクセルがあることに気付くでしょう。元の画像を取得すること以外は何もできません(実際には、画像にはサムネイルが含まれており、サムネイルには損傷はありません。本当に必要な場合はそのデータを再作成しようとする可能性があります)。私の読者から返されたイメージは、ネイティブソフトウェアによって読み込まれたイメージと一貫しています。
+0

こんにちはハラルドは、お返事にとても感謝しています。今、このエラーは私には分かります、説明のおかげで。私はあなたのプラグインを使用しようとしましたが、いくつかの依存関係ライブラリがないため、コンパイルできませんでした(私はいくつかのtwelvemonkeys-imageio jarsを追加しました)。だから、あなたはプラグインを使う正確な方法を説明してくれて、簡単なコードサンプルを表示して自分の画像をバッファリングすることができれば素晴らしいだろう。 –

+2

javaアプリケーションとサーブレットコンテナでプラグインを使用する方法の詳細については、こちらをご覧ください:https://github.com/haraldk/TwelveMonkeys –

+0

チャームのように働いています:) – DominikAngerer

関連する問題