decode method
Decode a WebP formatted file stored in bytes
into an Image.
If it's not a valid webp file, null is returned.
Implementation
@override
Image? decode(List<int> bytes, {int? frame}) {
if (startDecode(bytes) == null) {
return null;
}
if (!_info!.hasAnimation || frame != null) {
return decodeFrame(frame ?? 0);
}
Image? firstImage;
Image? lastImage;
for (var i = 0; i < _info!.numFrames; ++i) {
_info!.frame = i;
final frame = _info!.frames[i];
final image = decodeFrame(i);
if (image == null) {
continue;
}
image.frameDuration = frame.duration;
if (firstImage == null || lastImage == null) {
firstImage = Image(
width: _info!.width,
height: _info!.height,
numChannels: image.numChannels,
format: image.format,
frameDuration: image.frameDuration);
lastImage = firstImage;
} else {
lastImage = Image.from(lastImage);
if (frame.clearFrame) {
lastImage.clear();
}
}
compositeImage(lastImage, image, dstX: frame.x, dstY: frame.y);
firstImage.addFrame(lastImage);
}
return firstImage;
}