Adam zeigt in genau die richtige Richtung.
Wenn Sie möchten, um herauszufinden, wie auf Sinn fast jede Datei, Blick auf die Datenbank hinter dem file
Befehl auf einem UNIX, Linux oder Mac OS X-Maschine.
file
verwendet eine Datenbank mit "magischen Zahlen" - diese Anfangs-Bytes, die Adam aufgelistet hat - um den Typ einer Datei zu erkennen. man file
wird Ihnen sagen, wo Sie die Datenbank auf Ihrem Computer finden, z. /usr/share/file/magic
. man magic
wird Ihnen seine format mitteilen.
Sie können entweder Ihren eigenen Erkennungscode schreiben auf, was Sie in der Datenbank zu sehen, verwendet abgepackte Bibliotheken (z python-magic), oder - wenn Sie wirklich abenteuerlich - implementieren eine .NET-Version von libmagic
. Ich konnte keinen finden und hoffe, ein anderes Mitglied kann darauf hinweisen.
Falls Sie nicht ein UNIX-Rechner zur Hand haben, sieht die Datenbank wie folgt aus:
# PNG [Portable Network Graphics, or "PNG's Not GIF"] images
# (Greg Roelofs, [email protected])
# (Albert Cahalan, [email protected])
#
# 137 P N G \r \n ^Z \n [4-byte length] H E A D [HEAD data] [HEAD crc] ...
#
0 string \x89PNG PNG image data,
>4 belong !0x0d0a1a0a CORRUPTED,
>4 belong 0x0d0a1a0a
>>16 belong x %ld x
>>20 belong x %ld,
>>24 byte x %d-bit
>>25 byte 0 grayscale,
>>25 byte 2 \b/color RGB,
>>25 byte 3 colormap,
>>25 byte 4 gray+alpha,
>>25 byte 6 \b/color RGBA,
#>>26 byte 0 deflate/32K,
>>28 byte 0 non-interlaced
>>28 byte 1 interlaced
1 string PNG PNG image data, CORRUPTED
# GIF
0 string GIF8 GIF image data
>4 string 7a \b, version 8%s,
>4 string 9a \b, version 8%s,
>6 leshort >0 %hd x
>8 leshort >0 %hd
#>10 byte &0x80 color mapped,
#>10 byte&0x07 =0x00 2 colors
#>10 byte&0x07 =0x01 4 colors
#>10 byte&0x07 =0x02 8 colors
#>10 byte&0x07 =0x03 16 colors
#>10 byte&0x07 =0x04 32 colors
#>10 byte&0x07 =0x05 64 colors
#>10 byte&0x07 =0x06 128 colors
#>10 byte&0x07 =0x07 256 colors
Viel Glück!
FYI, dies auch für Ströme arbeitet mit System.Drawing.Image.FromStream() – jishi
, wenn Sie im Rahmen einer Web-Anwendung sind, ist es wichtig, den vollständig qualifizierten Namen zu verwenden oder die Baugruppe importieren zu vermeiden Verwirrung mit einem Image-Steuerelement ... System.Drawing.Image – MacGyver