3

次の問題があります。画像のアップロード機能を備えたWebサービスがあります。特定の画像をアップロードしようとすると、失敗します。これらの画像は正しいMIMETYPEを持っており、CMYKではありません(少なくともGIMPはRGBであると言っています)。 スローされる例外は、「サポートされていない画像タイプ」です。 このコマンドを開始しようとすると、問題が発生します。

BufferedImage img = ImageIO.read(new ByteArrayInputStream(image.getData()));

私はもう少し深く掘り下げて、ImageIO.read(ImageInputStream stream)彼が再びストリームを閉じようとすると、本当の例外がスローされます!

public static BufferedImage read(ImageInputStream stream)
    throws IOException {
    if (stream == null) {
        throw new IllegalArgumentException("stream == null!");
    }

    Iterator iter = getImageReaders(stream);
    if (!iter.hasNext()) {
        return null;
    }

    ImageReader reader = (ImageReader)iter.next();
    ImageReadParam param = reader.getDefaultReadParam();
    reader.setInput(stream, true, true);
    BufferedImage bi;
    try {
        bi = reader.read(0, param);
    } finally {
        reader.dispose();
        stream.close();
    }
    return bi;
}

例外をスローする画像は次のようになります。例:
クラッシュする画像

誰かが私がこれがクラッシュする理由とそれを修正する方法を理解するのを手伝ってくれることを願っています!

4

1 に答える 1

2

添付の写真はCMYKカラーモデルです。RGBに変換してみてください。

この質問は役に立ちます:JavaでCMYKからRGBに正しく変換する方法は?

于 2012-08-21T10:26:19.777 に答える