Created
December 2, 2024 13:40
-
-
Save erdesigns-eu/2d382916537dd2b81e87fdd84ba964e8 to your computer and use it in GitHub Desktop.
Get the image type from a buffer
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Get the type of an image. | |
* @param image The image as a buffer. | |
* @returns The type of the image. | |
*/ | |
export function getImageType(image: Buffer): Promise<{ mimeType: string, extension: string }> { | |
return new Promise((resolve, reject) => { | |
if (image[0] === 0xFF && image[1] === 0xD8 && image[2] === 0xFF) { | |
resolve({ | |
mimeType: 'image/jpeg', | |
extension: 'jpg', | |
}); | |
} | |
else if (image[0] === 0x89 && image[1] === 0x50 && image[2] === 0x4E && image[3] === 0x47) { | |
resolve({ | |
mimeType: 'image/png', | |
extension: 'png', | |
}); | |
} | |
else if (image[0] === 0x47 && image[1] === 0x49 && image[2] === 0x46 && image[3] === 0x38) { | |
resolve({ | |
mimeType: 'image/gif', | |
extension: 'gif', | |
}); | |
} | |
else if (image[0] === 0x42 && image[1] === 0x4D) { | |
resolve({ | |
mimeType: 'image/bmp', | |
extension: 'bmp', | |
}); | |
} | |
else if (image[0] === 0x52 && image[1] === 0x49 && image[2] === 0x46 && image[3] === 0x46 && image[8] === 0x57 && image[9] === 0x45 && image[10] === 0x42 && image[11] === 0x50) { | |
resolve({ | |
mimeType: 'image/webp', | |
extension: 'webp', | |
}); | |
} | |
else { | |
reject(Error('Unsupported image type.')); | |
} | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment