decodeImageFromPixels function
Convert an array of pixel values into an Image object.
pixels
is the pixel data in the encoding described by format
.
rowBytes
is the number of bytes consumed by each row of pixels in the
data buffer. If unspecified, it defaults to width
multipled by the
number of bytes per pixel in the provided format
.
The decodedCacheRatioCap
is the default maximum multiple of the compressed
image size to cache when decoding animated image frames. For example,
setting this to 2.0
means that a 400KB GIF would be allowed at most to use
800KB of memory caching unessential decoded frames. Caching decoded frames
saves CPU but can result in out-of-memory crashes when decoding large (or
multiple) animated images. Note that GIFs are highly compressed, and it's
unlikely that a factor that low will be sufficient to cache all decoded
frames. The default value is 25.0
.
Implementation
void decodeImageFromPixels(
Uint8List pixels,
int width,
int height,
PixelFormat format,
ImageDecoderCallback callback,
{int rowBytes, double decodedCacheRatioCap = double.infinity}
) {
final _ImageInfo imageInfo = new _ImageInfo(width, height, format.index, rowBytes);
final Future<Codec> codecFuture = _futurize(
(_Callback<Codec> callback) => _instantiateImageCodec(pixels, callback, imageInfo, decodedCacheRatioCap)
);
codecFuture.then((Codec codec) => codec.getNextFrame())
.then((FrameInfo frameInfo) => callback(frameInfo.image));
}