J'ai une image JPEG formatée JFIF. Je veux le décoder et obtenir la dimension.Décoder un fichier image JFIF en C#
Voici mon code:
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. Ce morceau de code est commun et vous pouvez le trouver partout sur Internet. Cela fonctionne très bien pour la plupart des images JPEG. Maintenant, cette image spécifique qui a été prise par l'appareil photo - "Canon EOS 300D DIGITAL", ne supporte pas ce morceau de code. Le marqueur de la cote est 0xFFC2 au lieu de 0xFFC0.
Ma question est celle qui est correcte? Si le code est correct, alors comment un appareil photo Canon peut-il produire une image non standard? Si l'appareil photo Canon est correct, alors comment pouvons-nous corriger le code pour corriger trouver la dimension de cette image?
Merci. Le FFC2 semble être le marqueur pour les images progressives
Qu'est-ce qu'une image progressive? Cela signifie-t-il que nous avons besoin d'une autre méthode pour décoder l'image jpeg progressive? Puis-je changer if (marqueur == 0xc0) à if (marqueur == 0xc0 || marqueur == 0xc2) pour résoudre le problème? – delpielo
J'ai mis à jour ma réponse – akonsu