getImageEncoding static method
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');
}