getImageEncoding static method

ImageEncoding getImageEncoding(
  1. List<int> bytes
)

Implementation

static ImageEncoding getImageEncoding(List<int> bytes) {
  Uint8List headerBytes = Uint8List.fromList(bytes.sublist(0,
      16)); // Adjust the size based on the maximum header size for the formats you're interested in.

  // Define known image file signatures
  Map<List<int>, ImageEncoding> signatures = {
    [0x42, 0x4D]: ImageEncoding.bmp,
    [0x47, 0x49, 0x46, 0x38, 0x37, 0x61]: ImageEncoding.gif,
    [0x47, 0x49, 0x46, 0x38, 0x39, 0x61]: ImageEncoding.gif,
    [0xFF, 0xD8, 0xFF]: ImageEncoding.jpeg,
    [0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A]: ImageEncoding.png,
    [0x00, 0x00, 0x01, 0x00]: ImageEncoding.ico,
    [0x00, 0x00, 0x02, 0x00]: ImageEncoding.ico,
    [0x49, 0x49, 0x2A, 0x00]: ImageEncoding.tiff,
    [0x4D, 0x4D, 0x00, 0x2A]: ImageEncoding.tiff,
  };

  for (var signature in signatures.entries) {
    if (listEquality(signature.key, headerBytes)) {
      return signature.value;
    }
  }

  throw Exception('image format unknown');
}