detectImageFormatFromBuffer function

ImageMediaType detectImageFormatFromBuffer(
  1. Uint8List buffer
)

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;
}