-
Notifications
You must be signed in to change notification settings - Fork 103
Changelog
Changes to ChunkyPNG over the subsequent versions since version 0.5.0:
-
Edge case bugfix in
Color.decompose_alpha_componentthat could get triggered in thechange_theme_color!method.
-
Added data URL importing
Canvas.from_data_url.
-
Added data URL exporting
Canvas#to_data_urlto easily use PNGs inline in CSS or HTML.
-
Workaround for performance bug in REE.
-
Added bicubic resampling of images.
-
Update resampling code to use integer math instead of floating points.
-
Properly read PNG files with a tRNS chunk in color mode 0 (grayscale) or 2 (true color).
-
Added
Color.to_grayscaleandCanvas#grayscale!to convert colors and canvases to grayscale. -
Memory footprint improvement of
Canvas#resample!
-
Added
Canvas#to_alpha_channel_bytesandCanvas#to_grayscale_streamto export raw pixel data. -
Spec suite cleanup
-
Add bezier curve drawing:
Canvas#bezier_curve. -
RDoc fixes & improvements.
-
Performance improvements.
Note: the are some API changes for this release. If you are using Canvas#compose or Canvas#replace, these methods will no longer operate in place, but will return a new canvas instance instead. The in place versions have been renamed to compose! and replace! to be more consistent with the rest of the API.
-
Added image resampling using the nearest neighbor algorithm:
Canvas#resample. -
Added circle and polygon drawing methods:
Canvas#circleandCanvas#polygon. -
Added in place version of
Canvas#crop,Canvas#rotate_180,Canvas#flip_horizontallyandCanvas#flip_vertically. Just add a bang to the method name (e.g.Canvas#crop!) and it will change the current canvas instead of returning a new one. These implementations are also more memory and CPU efficient. -
Added geometry helper classes:
ChunkyPNG::Point,ChunkyPNG::DimensionandChunkyPNG::Vector. -
Added a list of HTML named colors. Get them by calling
ChunkyPNG::Color(:teal)orChunkyPNG::Color('red @ 0.8') -
Added encoding support for 1-, 2-, and 4-bit grayscale images.
-
Cleaned up auto-detection of color mode settings. It will now choose 1 bit grayscale mode if an image only contains black and white. (The other low bitrate grayscale modes are never chosen automatically.)
-
RDoc improvements. See rdoc.info/gems/chunky_png/frames.
-
ChunkyPNG is now also tested on Ruby 1.8.6.
-
Added support for encoding indexed images with a low bitrate. It will automatically use less bits per pixel if possible.
-
Improved testing setup. ChunkyPNG is now tested on Ruby 1.8.7, 1.9.2, JRuby and Rubinius.
-
Decoding of 1, 2 and 4 bit indexed color images.
-
Decoding of 1, 2 and 4 bit grayscale images.
-
Decoding 16 bit images. The extra bits will be discarded, so the image will be loaded as 8 bit.
-
Used the official PNG suite to build a more complete test suite.
-
Bugfix: allow 256 instead of 255 colors for indexed images.
-
Improved handling of binary encoding for strings in Ruby 1.9.
-
Small fix to make grayscale use the B byte consistently.
-
Another small fix for OilyPNG compatibility
-
Small fix for OilyPNG compatibility
-
Refactored decoding and encoding to work on binary strings instead of arrays of integers. This gives a nice speedup and uses less memory. Thanks to Yehuda Katz for the idea.
-
Fixed an issue with interlaced images.
-
Fixed image metadata issue when duplicating images.
-
Added
flip_horizontally,flip_vertically,rotate_left,rotate_rightandrotate_180toChunkyPNG::Canvas. -
Now raises
ChunkyPNG::OutOfBoundsexceptions when referencing coordinates outside the image bounds. -
Added Gemfile for development dependency management.
-
Added
ChunkyPNG::Image#rectto draw simple rectangles. -
Fixed composing a transparent color on a fully transparent background.
-
Based on the suggestion of Dirkjan Bussink (Github: github.com/dbussink), introduced custom exception classes:
-
ChunkyPNG::SignatureMismatchis raised when the PNG signature could not be found. Usually this means the the file is not a PNG image. -
ChunkyPNG::CRCMismatchis raised when the a CRC check for a chunk in the PNG file fails. -
ChunkyPNG::NotSupportedis raised when the PNG image uses a feature that ChunkyPNG does not support. -
ChunkyPNG::ExpectationFailedis raised when a required expectation failed.
-
Version 0.7.2 was yanked
-
Some fixes for 32-bit systems.
-
Added
:best_compressionsaving routine to allow creating the smallest images possible. -
Added option to control Zlib compression level while saving.
-
Added methods to easily create different color variants of an image with a color theme. See Images with a color theme for more information.
-
Ruby 1.8.6 compatibility fixes
-
Improved API documentation.
-
Added alpha decomposition to extract a color mask from a themed image.
-
Improved API documentation.
-
Added
pointandlineanti-aliased drawing functions.
-
Removed last occurrences of floating math to speed up the library.
-
Added importing of ABGR and BGR streams.
-
Added exporting an image as ABGR stream.
-
Ruby 1.9 compatibility fixes.
-
Improved speed of PNG decoding.
-
Bugfix in average scanline decoding filter.
-
Added
:fast_rgbaand:fast_rgbsaving routines, which yield a 1500% speedup when saving an image.
-
Complete rewrite of the earlier versions, now including awesomeness and unicorns.
-
Dirkjan Bussink: github.com/dbussink
-
Didip Kerabat: github.com/didip
-
Tony Polik: github.com/tonypolik