Est-il possible d'en déduire ce format d'image est un fichier, sans avoir à lire tout le fichier?

StackOverflow https://stackoverflow.com/questions/52739

  •  09-06-2019
  •  | 
  •  

Question

Est-il une bonne façon de déterminer le format d'une image, sans avoir à lire tout le fichier en mémoire?

Évidemment, cela peut varier selon le format (je suis particulièrement intéressé par les fichiers TIFF), mais ce genre de procédure serait utile de déterminer quel type de format d'image d'un fichier sans avoir à lire l'intégralité du fichier?

BONUS:Que faire si l'image est une chaîne Base64?De toute façon fiable à déduire avant de décodage?

Était-ce utile?

La solution

La plupart des formats de fichier d'image ont des octets au début.Unix file commande est au début du fichier pour voir quel type de données qu'il contient.Voir l'article de Wikipedia sur Des numéros de magie dans les fichiers et magicdb.org.

Autres conseils

Bien sûr, il est.Comme les autres l'ont mentionné, la plupart des images de commencer avec une sorte de "Magie", qui se traduisent toujours à un type de données Base64.Voici quelques exemples:

Une image Bitmap est de commencer avec Qk3

Un Jpeg va commencer avec /9j/

Un GIF va commencer avec R0l (C'est un zéro comme le deuxième char).

Et ainsi de suite.Il n'est pas difficile de prendre les différents types d'images et de comprendre ce qu'ils codent pour.Juste être prudent, car certains ont plus d'un morceau de la magie, de sorte que vous devez en tenir compte dans votre B64 de traduction de code".

Soit file sur les *nix ligne de commande ou la lecture de la première octets du fichier.La plupart des fichiers sont fournis avec un en-tête unique dans les premiers octets.Par exemple, de TIFF en-tête ressemble à quelque chose comme ceci:

0x00000000: 4949 2a00 0800 0000
Pour plus d'informations sur le format de fichier TIFF en particulier si vous souhaitez savoir ce que sont ces octets stand pour, aller ici.

Un site complet de formats de fichiers est disponible à:

http://www.wotsit.org

Tiff va commencer avec soit II ou MM (Intel octet de commande ou Motorolla).
Le TIFF 6 spécification peut être téléchargé ici et n'est-ce pas trop dur de suivre

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top