0

java.mageio.stream APIを使用して、gif画像をImageInputStreamとして読み取っています。イメージ記述子ブロックの先頭のインデックス位置を見つけるために、そのストリームを「手動で」解析する方法はありますか? Gif のドキュメントによると、Image Separator - Image Descriptor の開始を識別する固定値 0x2C です。ストリームの各バイトを読み取って「0x2c」値と照合しましたが、複数のバイト値である「属性」があるため、明らかにこれは正しくありません。この時点で画像全体をロードしないようにしようとしているので、これを手動で実行しようとしています。どんなアイデアでも大歓迎です。前もって感謝します

4

1 に答える 1

1

回答を提供するためだけに、回答済みとしてマークできるようにします。

GIF 構造を手動で解析する代わりに、Java で GIF イメージ記述子からデータを取得する最も簡単な方法は、ImageIO を使用することです。

ImageReader画像の幅や高さなどの単純な値については、次のように対応するメソッドを使用できます。

ImageInputStream stream = ImageIO.createImageInputStream(gif); // gif is File or InputStream
ImageReader reader = ImageIO.getImageReaders(stream).next();
reader.setInput(stream);
int w = reader.getWidth(0);
int h = reader.getHeight(0);

GIF の詳細については、次を使用できます。

IIOMetadata metadata = reader.getImageMetadata(0);

ネイティブ メタデータ形式については、GIF メタデータを参照してください。標準 (フォーマット ニュートラル) メタデータ形式については、標準メタデータを参照してください。

于 2013-11-05T14:04:42.340 に答える