MCPcopy
hub / github.com/codeaashu/claude-code / detectImageFormatFromBuffer

Function detectImageFormatFromBuffer

src/utils/imageResizer.ts:769–812  ·  view source on GitHub ↗
(buffer: Buffer)

Source from the content-addressed store, hash-verified

767 * @returns Media type string (e.g., 'image/png', 'image/jpeg') or 'image/png' as default
768 */
769export function detectImageFormatFromBuffer(buffer: Buffer): ImageMediaType {
770 if (buffer.length < 4) return 'image/png' // default
771
772 // Check PNG signature
773 if (
774 buffer[0] === 0x89 &&
775 buffer[1] === 0x50 &&
776 buffer[2] === 0x4e &&
777 buffer[3] === 0x47
778 ) {
779 return 'image/png'
780 }
781
782 // Check JPEG signature (FFD8FF)
783 if (buffer[0] === 0xff && buffer[1] === 0xd8 && buffer[2] === 0xff) {
784 return 'image/jpeg'
785 }
786
787 // Check GIF signature (GIF87a or GIF89a)
788 if (buffer[0] === 0x47 && buffer[1] === 0x49 && buffer[2] === 0x46) {
789 return 'image/gif'
790 }
791
792 // Check WebP signature (RIFF....WEBP)
793 if (
794 buffer[0] === 0x52 &&
795 buffer[1] === 0x49 &&
796 buffer[2] === 0x46 &&
797 buffer[3] === 0x46
798 ) {
799 if (
800 buffer.length >= 12 &&
801 buffer[8] === 0x57 &&
802 buffer[9] === 0x45 &&
803 buffer[10] === 0x42 &&
804 buffer[11] === 0x50
805 ) {
806 return 'image/webp'
807 }
808 }
809
810 // Default to PNG if unknown
811 return 'image/png'
812}
813
814/**
815 * Detect image format from base64 data using magic bytes

Callers 4

readImageWithTokenBudgetFunction · 0.85
compressImageBufferFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected