MCPcopy Index your code
hub / github.com/claude-code-best/claude-code / detectImageFormatFromBuffer

Function detectImageFormatFromBuffer

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

Source from the content-addressed store, hash-verified

782 * @returns Media type string (e.g., 'image/png', 'image/jpeg') or 'image/png' as default
783 */
784export function detectImageFormatFromBuffer(buffer: Buffer): ImageMediaType {
785 if (buffer.length < 4) return 'image/png' // default
786
787 // Check PNG signature
788 if (
789 buffer[0] === 0x89 &&
790 buffer[1] === 0x50 &&
791 buffer[2] === 0x4e &&
792 buffer[3] === 0x47
793 ) {
794 return 'image/png'
795 }
796
797 // Check JPEG signature (FFD8FF)
798 if (buffer[0] === 0xff && buffer[1] === 0xd8 && buffer[2] === 0xff) {
799 return 'image/jpeg'
800 }
801
802 // Check GIF signature (GIF87a or GIF89a)
803 if (buffer[0] === 0x47 && buffer[1] === 0x49 && buffer[2] === 0x46) {
804 return 'image/gif'
805 }
806
807 // Check WebP signature (RIFF....WEBP)
808 if (
809 buffer[0] === 0x52 &&
810 buffer[1] === 0x49 &&
811 buffer[2] === 0x46 &&
812 buffer[3] === 0x46
813 ) {
814 if (
815 buffer.length >= 12 &&
816 buffer[8] === 0x57 &&
817 buffer[9] === 0x45 &&
818 buffer[10] === 0x42 &&
819 buffer[11] === 0x50
820 ) {
821 return 'image/webp'
822 }
823 }
824
825 // Default to PNG if unknown
826 return 'image/png'
827}
828
829/**
830 * Detect image format from base64 data using magic bytes

Callers 5

readImageWithTokenBudgetFunction · 0.85
compressImageBufferFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected