image
Dart Image Library provides server and web apps the ability to load, manipulate, and save images with various image file formats.
4.9.2
6.2M downloads/mo
#116 most downloaded on pub.dev
brendan-duncan/image
What this package is like to depend on
Last release 5 days ago
19 Aug 2026
Release timing varies
gaps range from 8 days to 9 months
Most releases are documented
notes for 107 of 121 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
122 releases · first in 2014
8 releases in the last 12 months
see the full history below
Release timeline
122 releases · Jan 2014 to Aug 2026Releases
latest 60 of 122-
4.9.219 Aug 2026Release notes
Open source →- Add the
DitherKernel.burkesandDitherKernel.jarvisJudiceNinkeerror-diffusion kernels. - Add ordered (Bayer) matrix dithering via
ditherImageBayerand theDitherKernel.bayer2x2,DitherKernel.bayer4x4,DitherKernel.bayer8x8kernels. Unlike the error-diffusion kernels, the pattern is position-based and uses a fixed threshold matrix, so it is deterministic and fast. - Add
DitherScanOrder(raster,serpentine,zigzag,hilbert) and theditherImage(scanOrder:)/quantize(ditherScanOrder:)/encodeGif(ditherScanOrder:)/GifEncoder(ditherScanOrder:)parameters.zigzagvisits pixels along the anti-diagonals, which breaks up the horizontal worm artifacts of raster scanning. - Fix binary PNM files being misdetected as TGA, by probing PNM before TGA in
findDecoderForData. - Fix
injectJpgExifdropping any segment (such as the JFIF APP0 header) that precedes the EXIF APP1 block, and losing the embedded EXIF thumbnail. - Remove xml dependency, replacing it with a minimal built-in parser for the bitmap font (.fnt) format.
- Fix
OctreeQuantizermapping colors to palette index 0 when their octree path hit a folded-away branch, which turned bright pixels near-black once an image had more distinct colors than the requested palette size. Palettes built from partially-folded internal nodes now include those nodes' entries, so the palette also no longer comes up short ofnumberOfColors.
- Add the
-
4.9.130 May 2026 -
4.9.021 May 2026Release notes
Open source →- Fix
minMaxreturning incorrect values when the minimum or maximum was in the first pixel of a multi-channel image. - Fix
copyResizeCropSquareignoring the crop offset when using non-nearest interpolation, which off-centered the resized result. - Improve the precision of the RGB/XYZ/CIE-Lab color conversions, and round rather than truncate the final RGB values, making the conversions lossless.
- Fix
copyResizeCropSquarethrowing a range error when a non-zero radius was used with a non-square image. - Fix non-antialiased
drawLinedrawing diagonal lines offset by ~1 pixel. - Preserve EXIF metadata when expanding an image with
copyExpandCanvas. Image.convertnow applies an explicitly providedalphavalue even when the format and channel count are unchanged.- Fix a range error in
Image.fromByteswhen the source row stride is smaller than the image's row stride. - Fix a
RangeErrorwhen decoding images with corrupt EXIF data. - Reject non-BMP files that merely start with the
BMsignature instead of crashing the decoder. - Fix
noisewithNoiseType.saltAndPepperproducing colored pixels instead of black/white ones. colorOffsetnow scales its offsets to the bit depth of the image, so the effect is consistent regardless of the image's format.- Add
fuzzyandpaddingoptions totrimandfindTrim. - Add
findEncoderForData, which returns anEncoderfor a buffer of image data, complementingfindDecoderForData. - Add a
disposeoption toGifEncoderto control the frame disposal method. PsdImage.layersno longer throws aLateInitializationErrorwhen accessed beforedecodehas been called.
- Fix
-
4.8.018 Feb 2026Release notes
Open source →- Fix JPEG decoding issue with Adobe RGB color transformations.
- Feature: Histogram equalize and stretch
-
4.7.221 Dec 2025Nothing published for this version
-
4.7.118 Dec 2025 -
4.7.018 Dec 2025Release notes
Open source →- Major update to the WebP decoder to resolve errors decoding some files.
- Fixed issue where App1 marker would not be written when Exif data is injected into jpegs without exif block. Also fixed wrong IFD1 pointer.
- Improved robustness of EXIF injection and reading:
- Skips malformed EXIF sub-IFDs (e.g., bad GPSInfo pointers) during reading and injection, preventing RangeErrors and crashes.
- Allows injecting new EXIF (including GPS) data into files with broken EXIF blocks.
-
4.6.011 Dec 2025Release notes
Open source →- Fix issues with injectJpegExif corrupting jpeg files.
- Clean up validation errors causing Wasm builds to fail.
- Fix issue with Jpeg subsampling causing some images to fail to load.
- Fix rgbToHsv function
- Fix jpeg RGB-to-YUV conversion and background blending logic.
- Decode and encode ICC profile data for JPEG
- Added export for ICO encoder
- Fix error adding frame to an empty image
- Fix GIF decoder animation frame clear color
- GIF animation frame background transparency.
- Fixes for TIFF decoding
-
4.5.423 Mar 2025Release notes
Open source →- Fix for fillRect for images that that have alpha.
- Fix copyExpandCanvas for images with alpha.
- Improved performance for copyResize.
- Improved performance for gaussianBlur.
-
4.5.322 Feb 2025Release notes
Open source →- Improve fillPolygon to better handle concave polygons.
- Update conditional imports to be compatible with WASM.
- Fix TIFF 5-channel CMYK decoding
- Fix adjustColor color corruption
- Improve adjustColor saturation calculations
- Fix alpha color handling in JPEG encoder
- Change the default background color to white instead of black
-
4.5.219 Dec 2024 -
4.5.119 Dec 2024 -
4.5.015 Dec 2024Release notes
Open source →- Fix gif animation decoder
- Add ConstColorRgba8, ConstColorRgb8 for const color creation.
-
4.4.012 Dec 2024 -
4.3.016 Oct 2024Release notes
Open source →- Fix exceptions loading some PSD files.
- Fix trim for palette images.
- Fix ICC decompression.
- Add physical size handling to PNG.
- Fix TIFF out of bounds error.
-
4.2.022 May 2024Release notes
Open source →- Fix decoding EXIF data from WebP.
- Add ContrastMode.scurve to contrast filter.
- Filter functions will auto-convert palette images
- Add BinaryQuantizer.
- Fix ditherImage not returning dithered image.
- Fix APNG decoding.
- drawString should use alpha color.
- Improve performance of animated GIF decoding.
- Fix TIFF tile decoding
- Add solarize filter function
- Fix decoding TIFF with ZLIB decoding
- Add PNM format decoder.
- Add support for uint16 palettes.
-
4.1.710 Feb 2024Release notes
Open source →- JPEG images will finish decoding even if the file is incomplete or has errors.
- Fix performance bug with Image.getBytes
-
4.1.601 Feb 2024 -
4.1.501 Feb 2024Release notes
Open source →- Optimize copying bytes in Image.fromBytes
- 2 channel images are treated as Luminance-Alpha
-
4.1.413 Jan 2024Release notes
Open source →- Fix Image.getBytes when ChannelOrder has a different number of channels than the image.
- copyResize command accepts maintainAspect and backgroundColor args.
- Fix EXIF decoder when image has bad IFD offsets.
- Improve drawString handling of new line characters when wrap is true.
- Improve GIF animation decoding when each frame has its own palette.
-
4.1.326 Sep 2023 -
4.1.224 Sep 2023 -
4.1.124 Sep 2023Release notes
Open source →- Add maintainAspect and backgroundColor to copyResize to resize width and height of an image, without stretching the source (using background color to pad).
- drawString will word-wrap even when x or y is set.
- Don't clamp brightness in adjustColor.
-
4.1.022 Sep 2023 -
4.0.1707 May 2023Release notes
Open source →- Fix resizing multi-frame palette images.
- Fix transparency issue with encodeGif.
-
4.0.1628 Apr 2023Release notes
Open source →- Fix GIF decoder not decoding some animation files transparency and frame duration.
- Fix default rowStride for Image.fromBytes.
-
4.0.1512 Feb 2023 -
4.0.1411 Feb 2023Release notes
Open source →- Use Image.backgroundColor for copyRotate, copyCropCircle, and other functions that reveal background pixels.
-
4.0.1330 Jan 2023 -
4.0.1223 Jan 2023Release notes
Open source →- Fix EXIF parsing little endian data
- Fix bounds errors with filter functions and palette images.
- Fix BMP encoding palette rgba images by converting them to 32-bit rgba.
-
4.0.1122 Jan 2023Release notes
Open source →- Add decodeJpgExif and injectJpgExif functions to process JPG exif data without needing to decode the image.
- Fix EXIF parse exception from empty strings.
- Fix EXIF string data not writing out null character.
-
4.0.1015 Jan 2023 -
4.0.915 Jan 2023Release notes
Open source →- Fix offset error with BMP encoder for images with < 8 bits per pixel
- Improve quality of converting 3-channel image to 1-channel.
-
4.0.808 Jan 2023Release notes
Open source →- Fix ChannelOrder.bgra.
- Add Image.hasAlpha getter property that will be true if the Image has an alpha channel.
-
4.0.706 Jan 2023 -
4.0.605 Jan 2023Release notes
Open source →Image.remapChannels(ChannelOrder order)to remap the order of channels from rgb to bgr, etc.Image.getBytes({ChannelOrder? order})will return the image data, optionally reordering the channels.- Image.fromBytes can take an optional
ChannelOrder? ordernamed arg to specify the channel order of the input data.
-
4.0.503 Jan 2023Release notes
Open source →- Improved antialiasing for drawLine
- Add antialias arg for drawCircle, fillCircle.
- Added radius argument to drawRect, fillRect, copyCrop, and copyResizeCropSquare to support rounded rectangles.
- Add Image.getPixelClamped method.
- Added TGA decoder 8-bit, 16-bit, 32-bit, and RLE compression modes.
-
4.0.401 Jan 2023Release notes
Open source →- Fix for animated PNG with palette images, which needed a global palette for all frames.
- Fix TIFF encoder for palette images.
- Cleaned up EXIF classes.
-
4.0.331 Dec 2022 -
4.0.231 Dec 2022 -
4.0.131 Dec 2022 -
4.0.030 Dec 2022Release notes
Open source →- Major update of the Dart Image Library. Includes support for:
- Major overhaul of the API. Dart has changed a lot in the 10 years since this library was written, so the API has been modernized.
- Flexible ImageData, with support for 1, 2, 4, 8, 16, and 32 bit images, and 1-4 channels per pixel.
- 16, 32, and 64-bit floating-point format images.
- 8, 16, and 32-bit integer format images.
- Palette images with 1, 2, 4, and 8-bit colors.
- Improved pixel access API.
- Merged HDR and Animation functionality into the single Image class.
- New Command API with support for executing on Isolate threads.
- New filters and drawing commands.
- Major update of the Dart Image Library. Includes support for:
-
3.3.030 Dec 2022Release notes
Open source →- Improved EXIF data management
- Fix character code issue with BitmapFont.
- This is the last 3.x update before the big 4.0 release.
-
3.2.216 Oct 2022 -
3.2.116 Oct 2022Release notes
Open source →- Fixes for APNG: fix exception from some APNG files, and some frames were not composited correctly.
-
3.2.018 May 2022 -
3.1.318 Feb 2022Release notes
Open source →- Optimize Image.getWhiteBalance function, add asDouble argument to return double value.
-
3.1.218 Feb 2022Release notes
Open source →- Add BmpEncoder to encode BMP images, along with encodeBmp function. Currently, only 24-bit or 32-bit BMP images will be encoded.
-
3.1.113 Jan 2022Release notes
Open source →- Fix error loading some tiff images
- Fix jpeg comments to support non-strict utf8 text
-
3.1.030 Nov 2021Release notes
Open source →- Update archive version requirement
- Fix JPGDecoder to return correct nullable types.
-
3.0.802 Oct 2021 -
3.0.729 Sep 2021 -
3.0.629 Sep 2021Release notes
Open source →- Clean up LICENSE file, moving other license references to LICENSE-other.
-
3.0.521 Sep 2021 -
3.0.411 Sep 2021 -
3.0.311 Sep 2021Release notes
Open source →- Fix #320 * copyResize incorrectly applies linear and cubic.
- Apply EXIF orientation when decoding JPEG images.
-
3.0.219 Mar 2021Release notes
Open source →- Dithering support for GIF encoder.
- Fix PNGEncoder issue if addFrame is called directly instead than encodeImage or encodeAnimation.
- Optimization for drawImage.
-
3.0.128 Feb 2021Release notes
Open source →- Improve NeuralQuantizer to fix issue encoding small GIF images.
- Code cleanup resolving lint issues.
-
3.0.0-nullsafety.025 Jan 2021 pre-releaseNothing published for this version
-
2.1.1911 Nov 2020Release notes
Open source →- Refactor HdrImage to better support more diverse formats, used for Hdr Tiff decoding.
- TiffDecoder will maintain Tag data after decoding, allowing them to be read to process image metadata.
- Added TiffEncoder. Still needs work to be able to add tag data to an encoded image.
- Clean up print statements from BmpDecoder.