How can I get the official IANA Image Media Type (if any) of a binary stream? I'd like to avoid trusting to file extensions and vague guesses when handling images. Preferably some command using common tools like ImageMagick's identify
, or some programming language if necessary.
1 Answer
You could use the file
command. It's available on most linux distributions by default, and you can get it for Windows via the GnuWin32 file package.
Call it with:
$ file --mime-type clock.png
clock.png: image/png
Note that it's not 100% accurate - I don't think anything can be theoretically.
If you want to do that in code, there's libmagic
that provides a C api. It can process either files or in-memory buffers. (file
uses that on Linux.)