Skip to content

Instantly share code, notes, and snippets.

@mattt
Created March 27, 2014 23:19
Show Gist options
  • Star 70 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save mattt/9821341 to your computer and use it in GitHub Desktop.
Save mattt/9821341 to your computer and use it in GitHub Desktop.
A quick function for determining an image's file type by its first couple of bytes
@import MobileCoreServices;
static CFStringRef UTTypeForImageData(NSData *data) {
const unsigned char * bytes = [data bytes];
if (data.length >= 8) {
if (bytes[0] == 0x89 && bytes[1] == 0x50 && bytes[2] == 0x4E && bytes[3] == 0x47 && bytes[4] == 0x0D && bytes[5] == 0x0A && bytes[6] == 0x1A && bytes[7] == 0x0A) {
return kUTTypePNG;
}
}
if (data.length >= 4) {
if (bytes[0] == 0xFF && bytes[1] == 0xD8 && bytes[2] == 0xFF && bytes[3] == 0xE0) {
return kUTTypeJPEG;
}
}
if (data.length >= 3) {
if (bytes[0] == 0x47 && bytes[1] == 0x49 && bytes[2] == 0x46) {
return kUTTypeGIF;
} else if (bytes[0] == 0x49 && bytes[1] == 0x49 && bytes[2] == 0x2A) {
return kUTTypeBMP;
}
}
if (data.length >= 2) {
if (bytes[0] == 0x42 && bytes[1] == 0x4D) {
return kUTTypeBMP;
}
}
return nil;
}
@sdsykes
Copy link

sdsykes commented Mar 28, 2014

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment