Un JPEG peut être codé de différentes manières; Base Line, progressive, etc.Comment en C# puis-je savoir si une image JPEG est progressive
Comment puis-je déterminer si elle est progressive a été utilisé en C#
Un JPEG peut être codé de différentes manières; Base Line, progressive, etc.Comment en C# puis-je savoir si une image JPEG est progressive
Comment puis-je déterminer si elle est progressive a été utilisé en C#
Sur la base de la version HTML http://techslides.com/demos/progressive-test.html un JPEG qui est codé contient progressivement les octets FFC2.
Le FFC2 marker indique le début de l'image qui est présente uniquement dans les images progressives.
var imageUrl = "progress.jpg";
using (var wc = new WebClient())
{
byte[] imageBytes = wc.DownloadData(imageUrl);
string hex = BitConverter.ToString(imageBytes.Take(500).ToArray());
var imageAsHex = hex.Replace("-", "").ToUpper();
Console.WriteLine("Is JPEG: " + imageAsHex.Contains("FFD8"));
Console.WriteLine("Is Progressive: " + imageAsHex.Contains("FFC2"));
}
Pourquoi voudriez-vous convertir les octets en chaîne bien? C'est tellement horriblement inefficace, et cela peut causer à tort que des octets "AF FD 8B" soient considérés comme correspondant à "FF D8". Aussi, semble être une méthode plus précise que "une séquence de 2 octets existe quelque part dans les 500 premiers octets" pourrait être utilisée. – Nyerguds
Bon point, avez-vous d'autres suggestions? – John
Eh bien, soit réellement comprendre comment l'en-tête de jpeg fonctionne et le détecter correctement, ou simplement faire une boucle sur les octets et les vérifier dans des séquences de 2 pour détecter vos propriétés. Bien sûr, il y aura plus de code de votre côté, mais je suis à peu près sûr que ce sera toujours plus efficace que les comparaisons de chaînes. Le fait que les outils de chaîne de caractères soient un court chemin pour obtenir un résultat ne signifie pas qu'il n'y a pas beaucoup plus de choses derrière ces simples appels. – Nyerguds
En fait, il peut être codé de plusieurs autres façons. Séquentiel est très commun. Ensuite, il y a les modes JPEG les moins courants. – user3344003
Intéressant merci – John