detectImageFormatFromBuffer function
Detect image format from a buffer using magic bytes.
Implementation
ImageMediaType detectImageFormatFromBuffer(Uint8List buffer) {
if (buffer.length < 4) return ImageMediaType.png;
// PNG signature
if (buffer[0] == 0x89 &&
buffer[1] == 0x50 &&
buffer[2] == 0x4E &&
buffer[3] == 0x47) {
return ImageMediaType.png;
}
// JPEG signature (FFD8FF)
if (buffer[0] == 0xFF && buffer[1] == 0xD8 && buffer[2] == 0xFF) {
return ImageMediaType.jpeg;
}
// GIF signature (GIF87a or GIF89a)
if (buffer[0] == 0x47 && buffer[1] == 0x49 && buffer[2] == 0x46) {
return ImageMediaType.gif;
}
// WebP signature (RIFF....WEBP)
if (buffer[0] == 0x52 &&
buffer[1] == 0x49 &&
buffer[2] == 0x46 &&
buffer[3] == 0x46) {
if (buffer.length >= 12 &&
buffer[8] == 0x57 &&
buffer[9] == 0x45 &&
buffer[10] == 0x42 &&
buffer[11] == 0x50) {
return ImageMediaType.webp;
}
}
return ImageMediaType.png;
}