""" tools/image.jl - Image utilities This module provides image detection and encoding utilities. """ module Image using ..Types: * function detectSupportedImageMimeType(buffer::Vector{UInt8})::Union{String, Nothing} if length(buffer) >= 3 && buffer[1:3] == [0xff, 0xd8, 0xff] if buffer[4] == 0xf7 return nothing end return "image/jpeg" end if length(buffer) >= 8 && buffer[1:8] == [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a] return "image/png" end if length(buffer) >= 3 && buffer[1:3] == [0x47, 0x49, 0x46] return "image/gif" end if length(buffer) >= 12 && buffer[1:4] == [0x52, 0x49, 0x46, 0x46] && buffer[9:12] == [0x57, 0x45, 0x42, 0x50] return "image/webp" end if length(buffer) >= 2 && buffer[1:2] == [0x42, 0x4d] return "image/bmp" end return nothing end function encodeBase64(bytes::Vector{UInt8})::String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" output = "" for i in 1:3:length(bytes) first_byte = i <= length(bytes) ? bytes[i] : 0 second_byte = i+1 <= length(bytes) ? bytes[i+1] : 0 third_byte = i+2 <= length(bytes) ? bytes[i+2] : 0 output *= alphabet[first_byte >> 2 + 1] output *= alphabet[(((first_byte & 0x03) << 4) | ((second_byte >> 4) & 0x0f)) + 1] if i+1 <= length(bytes) output *= alphabet[(((second_byte & 0x0f) << 2) | ((third_byte >> 6) & 0x03)) + 1] else output *= "=" end if i+2 <= length(bytes) output *= alphabet[third_byte & 0x3f + 1] else output *= "=" end end return output end end