Decoder class abstract

Base class for image format decoders.

Image pixels are stored as 32-bit unsigned ints, so all formats, regardless of their encoded color resolutions, decode to 32-bit RGBA images. Encoders can reduce the color resolution back down to their required formats.

Some image formats support multiple frames, often for encoding animation. In such cases, the decodeImage method will decode the first (or otherwise specified with the frame parameter) frame of the file. decodeAnimation will decode all frames from the image. startDecode will initiate decoding of the file, and decodeFrame will then decode a specific frame from the file, allowing for animations to be decoded one frame at a time. Some formats, such as TIFF, may store multiple frames, but their use of frames is for multiple page documents and not animation. The terms 'animation' and 'frames' simply refer to 'pages' in this case.

If an image file does not have multiple frames, decodeAnimation and startDecode/decodeFrame will return the single image of the file. As such, if you are not sure if a file is animated or not, you can use the animated functions and process it as a single frame image if it has only 1 frame, and as an animation if it has more than 1 frame.

Most animated formats do not store full images for frames, but rather some frames will store full images and others will store partial 'change' images. For these files, decodeAnimation will always return all images fully composited, meaning full frame images. Decoding frames individually using startDecode and decodeFrame will return the potentially partial image. In this case, the DecodeInfo returned by startDecode will include the width and height resolution of the animation canvas, and each Image returned by decodeFrame will have x, y, width and height properties indicating where in the canvas the frame image should be drawn. It will also have a disposeMethod property that specifies what should be done to the canvas prior to drawing the frame: Image.DISPOSE_NONE indicates the canvas should be left alone; Image.DISPOSE_CLEAR indicates the canvas should be cleared. For partial frame images,Image.DISPOSE_NONE is used so that the partial-frame is drawn on top of the previous frame, applying it's changes to the image.

Implementers

Constructors

Decoder()

Properties

hashCode int
The hash code for this object.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

decodeAnimation(List<int> bytes) Animation?
Decode all of the frames from an animation. If the file is not an animation, a single frame animation is returned. If there was a problem decoding the file, null is returned.
decodeFrame(int frame) Image?
Decode a single frame from the data that was set with startDecode. If frame is out of the range of available frames, null is returned. Non animated image files will only have frame 0. An Image is returned, which provides the image, and top-left coordinates of the image, as animated frames may only occupy a subset of the canvas.
decodeHdrFrame(int frame) HdrImage?
Decode a single high dynamic range (HDR) frame from the data that was set with startDecode. If the format of the file does not support HDR images, the regular image will be converted to an HDR image as (color / 255). If frame is out of the range of available frames, null is returned. Non animated image files will only have frame 0. An Image is returned, which provides the image, and top-left coordinates of the image, as animated frames may only occupy a subset of the canvas.
decodeHdrImage(List<int> bytes, {int frame = 0}) HdrImage?
Decode the file and extract a single High Dynamic Range (HDR) image from it. HDR images are stored in floating-poing values. If the format of the file does not support HDR images, the regular image will be converted to an HDR image as (color / 255). If the file is animated, the specified frame will be decoded. If there was a problem decoding the file, null is returned.
decodeImage(List<int> bytes, {int frame = 0}) Image?
Decode the file and extract a single image from it. If the file is animated, the specified frame will be decoded. If there was a problem decoding the file, null is returned.
isValidFile(List<int> bytes) bool
A light-weight function to test if the given file is able to be decoded by this Decoder.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
numFrames() int
How many frames are available to be decoded. startDecode should have been called first. Non animated image files will have a single frame.
startDecode(List<int> bytes) DecodeInfo?
Start decoding the data as an animation sequence, but don't actually process the frames until they are requested with decodeFrame.
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited