У меня есть изображение JPEG в формате 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);
}
Хорошо.Этот фрагмент кода является распространенным, и вы можете найти его по всему Интернету.Он отлично работает для большинства изображений JPEG.
Теперь это конкретное изображение, полученное камерой - «Canon EOS 300D DIGITAL», не поддерживает этот фрагмент кода.Маркер для измерения 0xFFC2 вместо 0xFFC0.
Мой вопрос, какой из них правильный?Если код правильный, то как камера Canon может создавать нестандартное изображение?Если камера Canon верна, то как мы можем исправить код, чтобы найти размер этого изображения?
Спасибо.