画像があり、それをgrayscale.jpgと呼びます。今度はその画像をThe Gimpで開き、カラーモードをRGBに変更してcolor.jpgとして保存します。どの画像ビューアでもgrayscale.jpgとcolor.jpgを見ると、まったく同じように見えます。私は正しい値を返しますjavax.imageio.ImageIO
javax.imageio.ImageIOグレースケール画像上の不適切なRGB値を読み取る
import javax.imageio.ImageIO;
input = ImageIO.read(new File("grayscale.jpg"));
System.out.format("Grayscale value: %x\n", input.getRGB(200, 200));
input = ImageIO.read(new File("color.jpg"));
System.out.format("Color value: %x\n", input.getRGB(200, 200));
カラー画像で画像を開いた場合でも、0xff6c6c6cを言います。グレースケール画像は、0xffaeaeaeのように違った、より軽く、間違った値を返します。言い換えれば
Grayscale value: 0xffaeaeae // Incorrect (Lighter)
Color value: 0xff6c6c6c // Correct
、javax.imageio.ImageIOは、グレースケール画像は、彼らが実際よりもはるかに軽いです考えています。グレースケールイメージを正確に読み取るにはどうしたらいいですか?
編集
ここでより多くのコンテキストです。ユーザーがグレースケールの画像をアップロードします。 Javaはサーバー上で動作し、かなり複雑な画像処理を行います。ですから、理想的な解決策は、コマンドラインツールを使って何かを共にするのではなく、Javaコードを修正することです。
より掘削した後、これは http://stackoverflow.com/questions/6474753/my-batch-jpg-resizerの複製であります- –