JFIF形式のJPEG画像があります。私はそれをデコードし、次元を取得したい。C#でJFIF画像ファイルをデコードする
while (binaryReader.ReadByte() == 0xff)
{
byte marker = binaryReader.ReadByte();
ushort chunkLength = binaryReader.ReadLittleEndianInt16();
if (marker == 0xc0)
{
binaryReader.ReadByte();
int height = binaryReader.ReadLittleEndianInt16();
int width = binaryReader.ReadLittleEndianInt16();
return new Size(width, height);
}
binaryReader.ReadBytes(chunkLength - 2);
}
OK:
は、ここに私のコードです。このコードは一般的なもので、インターネット上のどこにでも見つけることができます。ほとんどのJPEG画像でうまく動作します。
カメラで撮影されたこの特定の画像「Canon EOS 300D DIGITAL」は、このコードをサポートしていません。ディメンションのマーカーは0xFFC0ではなく0xFFC2です。
私の質問は正しいですか?コードが正しければ、Canonカメラはどのように非標準画像を生成できますか? Canonカメラが正しい場合、この画像の寸法を見つけるためにコードを修正するにはどうすればよいですか?
ありがとうございました。
プログレッシブ画像とは何ですか?プログレッシブJPEG画像を解読する別の方法が必要なのでしょうか? if(marker == 0xc0) if(marker == 0xc0 || marker == 0xc2)を変更して問題を解決できますか? – delpielo
私の回答を更新しました – akonsu