findDecoderForData function
Find a Decoder that is able to decode the given image data
.
Use this is you don't know the type of image it is. Since this will
validate the image against all known decoders, it is potentially very slow.
Implementation
Decoder? findDecoderForData(List<int> data) {
// The various decoders will be creating a Uint8List for their InputStream
// if the data isn't already that type, so do it once here to avoid having to
// do it multiple times.
final bytes = data is Uint8List ? data : Uint8List.fromList(data);
final jpg = JpegDecoder();
if (jpg.isValidFile(bytes)) {
return jpg;
}
final png = PngDecoder();
if (png.isValidFile(bytes)) {
return png;
}
final gif = GifDecoder();
if (gif.isValidFile(bytes)) {
return gif;
}
final webp = WebPDecoder();
if (webp.isValidFile(bytes)) {
return webp;
}
final tiff = TiffDecoder();
if (tiff.isValidFile(bytes)) {
return tiff;
}
final psd = PsdDecoder();
if (psd.isValidFile(bytes)) {
return psd;
}
final exr = ExrDecoder();
if (exr.isValidFile(bytes)) {
return exr;
}
final bmp = BmpDecoder();
if (bmp.isValidFile(bytes)) {
return bmp;
}
final tga = TgaDecoder();
if (tga.isValidFile(bytes)) {
return tga;
}
final ico = IcoDecoder();
if (ico.isValidFile(bytes)) {
return ico;
}
return null;
}