- If a file couldn't be found, we now throw a NotFoundException exception (#853, @playmono)
- Add support for webp_lossless to GD and GMagick (#858, @ausi)
- Use streams in ExifMetadataReader (#861, @ausi)
- WebP format now supports animation (#812, @Yoann-TYT)
- Fix PHP 8.2 warnings with Point class (#847, @anovsiradj)
- Let PHP automatically detect the preferred TLS version (#841, @radli)
- Add @return phpdoc to ReturnTypeWillChange methods (#846, @mlocati)
- Fix invalid format MIME type definition (#835, @xdanik)
- Workaround for a bug in PHP 7.3+opcache that causes segmentation faults (#826, #829, #828, @ausi, @mnocon, @mlocati)
- Fix undefined variable $engineRawVersion in Imagick/Gmagick DriverInfo (#825, @fxbt)
- Minimum PHP supported version is now 5.5 (#820, @PowerKiKi)
- Support AVIF, HEIC, and JXL in Imagick driver (#759, #765, @ausi)
- Support AVIF in GD driver (#791, @mlocati)
- Make the $filter parameter of the resize method invariant (#776, @mlocati)
- Ability to specify the alpha-blending of the GD drawer (#790, @mlocati)
- Add support for SINCFAST filter in Imagick driver (#823, @mlocati)
- Fix applyMask() for GD driver (#708, @ninze)
- Fix PHP 8.1 compatibility (#768, #791, @ausi, @mlocati)
- Fix error handling in grayscale() for Gmagick driver (#757, @dmitry-kulikov)
- Fix convolve() for Imagick driver (#775, @mlocati)
- Fix array retuned by histogram() method of GD and Imagick drivers (#797, @mlocati)
- Fix handling alpha channel in Imagick (#775, #798, @mlocati)
- New Driver\Info classes to inspect installed drivers (#802, #805, #806, @mlocati)
- Fix wrong load logic in Imagick (#807, @mlocati)
- Fix PHP 8.0 compatibility, except gmagick - see https://bugs.php.net/bug.php?id=80106 (#740, @ausi)
- Optimize reading EXIF metadata from local files (#741, @jorrit)
- Fix rotation with imagick (#734, @lashus @ausi)
- Fix saving multi-layer images (eg animated GIFs) as plain images with gmagick and imagick (#746, @alexander-schranz @mlocati)
- Fix gmagick not resolving the correct export format in some edge cases (#750, @ausi)
- Handle jfif extension in GD driver (#727, @sylvain-msl-talkspirit)
- Improve detection of unsupported Exit Metadata Reader (#729, @mlocati, @ausi)
- The GD driver can now load WebP files (#711, #718, @lashus, @ausi)
- Avoid calling
imageantialias
if it's not available (#713, @ahukkanen)
- Silence call to
\Imagick::setImageOpacity()
in order to prevent deprecation error with Imagick 3.4.4 and ImageMagick 6 (#715, @samdark, @mlocati)
ExifMetadataReader
now returns all the available metadata, not only EXIF and IFD0 (#701, @mlocati)
- New
ImageInterface::THUMBNAIL_FLAG_NOCLONE
flag forthumbnail()
to let it modify the original image instance in order to save memory (@mlocati)
- Check that the Imagick PHP extension is not compiled using ImageMagick version 7.0.7-32 because it does not work correctly (@mlocati)
Box
now rounds the width/height it receives (previously it discarded the decimal points) (@mlocati)
- New
FontInterface
method:wrapText
- split a text into multiple lines, so that it fits a specific width (@mlocati)
BREAKING CHANGE if you have your ownFontInterface
implementation, it now must implementwrapText
- Drawer methods can now accept a thickness of zero (@mlocati)
- Fix drawing unfilled chords with GD driver (@mlocati)
- Fix thickness drawing of unfilled chords with Imagick and Gmagick drivers (@mlocati)
- Fix handling of radius in
circle
method implementations (@mlocati) - The
dissolve
method ofColorInterface
normalizes the final value of alpha (@mlocati)
BREAKING CHANGEdissolve
doesn't throw aImagine\Exception\InvalidArgumentException
anymore
- The
coalesce
method ofLayerInterface
instances now returns the LayerInterface itself (@mlocati)
BREAKING CHANGE if you have your ownLayerInterface
implementation, it now must return$this
- The
__toString
method has been added toColorInterface
since all its implementations have it (@mlocati)
BREAKING CHANGE if you have your ownColorInterface
implementation, it now must implement__toString
- New Imagick save option:
optimize
if set, the size of animated GIF files is optimized (@mlocati)
NOTE Imagick requires that the image frames have the same size - The
paste
method now accepts images not fully included in the destination image (@mlocati)
BREAKING CHANGE the paste method doesn't throw an OutOfBoundsException anymore - Fix handling of PNG compression in Imagick
save
method (@mlocati) - New drawer methods:
rectangle
andcircle
(@mlocati)
BREAKING CHANGE if you have your own implementation ofDrawerInterface
you should add these two new methods - The
getChannelsMaxValue
method has been added toPaletteInterface
(@mlocati)
BREAKING CHANGE if you have your ownPaletteInterface
implementation, it now must implement this new method
- Imagine is now tested under Windows too (@mlocati)
- Add support to webp image format (@chregu, @antoligy, @alexander-schranz)
- Add
Imagine\File\LoaderInterface
that allows loading remote images with any imaging driver (@mlocati). You can use your ownLoaderInterface
implementation so that you can for instance use curl or any other library. - Fix some phpdoc issues (@mlocati)
flipHorizontally
andflipVertically
methods of GD images is now much faster on PHP 5.5+ (@mlocati)- Fix loading of PNG indexed images with GD (@mlocati)
- Loading indexed images with GD is now much faster on PHP 5.5+ (@mlocati)
- Add support to grayscale images with Gmagick (@mlocati)
- Add support to alpha channels of Gmagick images (@mlocati)
- Fix
getColorAt
method of Gmagick images (@mlocati) - Add
getTransformations
to theAutorotate
filter, so that you can get the list of transformations that should be applied to an image accordingly to the EXIF metadata (@mlocati) - The metadata reader now doesn't throw exceptions or warnings (@lentex, @mlocati)
- Fix documentation (@ZhangChaoWN, @Mark-H, @mlocati)
- Fix pixel range issue with Gmagick image (@b-viguier)
- Fix
text
drawer method on Windows when using relative font file paths (@mlocati) - Fix
box
font method on Windows when using relative font file paths (@mlocati) - Fix crash on Windows when loading an image with Imagick (@mlocati)
- Fix generation of API documentation (@mlocati)
- Add
jpeg_sampling_factors
option when saving JPEG images (Gmagick/Imagick only) (@ausi) - Add BMP as supported image format (@mlocati)
- Add support to new image type constants of Imagick (@ausi)
- Check that Imagick correctly supports profiles (@ausi)
- Add
setMetadataReader
/getMetadataReader
toImagineInterface
(@mlocati)
BREAKING CHANGE if you have your ownImagineInterface
implementation, it now must implement those two methods - Fix creating Gmagick images with alpha colors when palette doesn't support alpha (@FractalizeR)
- Fix warning about deprecated clone method in copy method of Imagick images (@mlocati)
- Fix copy methods of Images (the original image and its new copy are now fully detached) (@mlocati)
- It's now possible to use
clone $image
as an alternative to$image->copy()
(@mlocati) - Add support to custom classes for
BoxInterface
,MetadataReaderInterface
,FontInterface
,LoaderInterface
,LayersInterface
,ImageInterface
(@mlocati)
BREAKING CHANGE if you have your ownImagineInterface
implementation, it now must implement the methods ofClassFactoryAwareInterface
- Add support for pasting with alpha for GD and Imagick (@AlloVince, @mlocati)
- Downscaling a
Box
until it reaches a dimension less than 1 returns a box with dimension of 1 instead of throwing an exception (@mlocati)
BREAKING CHANGE if you relied onBox::scale
throwing an exception in this case - New filters:
BlackWhite
,BorderDetection
,Negation
,Neighborhood
(@rejinka) - Minor optimization of filters based on
OnPixelBased
(@rejinka, @mlocati) - Add flag to
thumbnail
to allow upscaling images (@vlakoff)
BREAKING CHANGE the$mode
argument has been renamed to$settings
, and it's now an integer (but old string values are accepted for backward compatibility). In this case theManipulatorInterface
constantsTHUMBNAIL_INSET
,THUMBNAIL_OUTBOUND
were changed from string values to integers. - New filter:
brightness
(@lenybernard, @mlocati) - New filter:
colvolve
available for all graphics libraries except gmagick with version prior to 2.0.1RC2 (@armatronic, @mlocati) - Fix bug in Imagine\Image\Palette\RGB::blend() (@dmolineus, @mlocati)
- Autoload was moved from PSR-0 to PSR-4, and code files moved from
/lib/Imagine
to/src
(@mlocati)
- Remove Symfony PHPUnit bridge as dependency (@craue)
- Fix memory usage on metadata reading (@Seldaek)
- PHP 7.1 support
- Latest Imagemagick compatibility (@jdewit)
- Fix wrong array_merge when calling Transformation::getFilters without filters
- Add export-ignore git attribute (@Benoth)
- Fix docblocks (@Sm0ke0ut and @norkunas)
- Fix animated gif loop length options (@jygaulier)
- Multiple tweaks for the repository and travis builds (@localheinz, @vrkansagara and @dunzun)
- Fix metadata extraction from streams (@armatronic)
- Fix autorotation (@tarleb)
- Load exifmetadata reader whenever possible
- Add metadata getter
- Stripping image containing an invalid ICC profile fails
- MetadataBag now implements \Countable
- Fix wrong array_merge in MetadataBag giving invalid results with HTTP resources (@javaguirre)
- Fix Imagick merge strategy (@GrahamCampbell)
- Fixed various alpha issues (@RadekDvorak)
- Fix Image cloning on HHVM (@RdeWilde)
- Fix exception on invalid file using GD driver (@vlakoff).
- Fix ImageInterface::getSize on animated GIFs (@sokac)
- Fix invalid namespace usage (#336 @csanquer).
- BC break: Colors are now provided through the PaletteInterface. Any call to previous Imagine\Image\Color constructor must be removed and use the palette provided by Imagine\Image\ImageInterface::getPalette to create colors.
- BC break : Animated GIF default delay is no longer 800ms but null. This avoids resettings a delay on animated image.
- Add support for ICC profiles
- Add support for CMYK and grayscale colorspace images.
- Add filter argument to ImageInterface::thumbnail method.
- Add priority to filters (@Richtermeister).
- Add blur effect (@Nokrosis).
- Rename "quality" option to "jpeg_quality" and apply it only to JPEG files (@vlakoff).
- Add "png_compression_level" option (@vlakoff).
- Rename "filters" option to "png_compression_filter" (@vlakoff).
- Deprecate
quality
andfilters
ManipulatorInterface::save options, usejpeg_quality
,png_compression_level
andpng_compression_filter
instead. - Add support for alpha blending in GD drawer (@salem).
- Add width parameter to Drawer::text (@salemgolemugoo).
- Add NotSupportedException when a driver does not support an operation (@rouffj).
- Add support for metadata.
- Fix #158: GD alpha detection + Color::isOpaque are broken.
- Fix color extraction for non-RGB palettes.
- Add
Layers::coalesce
. - Add filter option to
ImageInterface::resize
. - Add sharpen effect.
- Add interlace support.
LayersInterface
now extendsArrayAccess
, gives support for animated gifs.- Remove Imagick and Gmagick flatten after composite.
- Fix pixel opacity reading in
Gmagick::histogram
. - Deprecate pear channel installation.
- Deprecate phar installation.
- Lazy-load GD layers.
- Add support for image Layers.
- Add Colorize effect.
- Add documentation for the Grayscale effect.
- Port RelativeResize filter from JmikolaImagineBundle.
- Add Grayscale effect.
Drawer::text
position fix.
- Add configurable border thickness to drawer interface and implementations.
- Add
ImageInterface
::strip. - Add Canvas filter.
- Add resolution option on image saving.
- Add Grayscale filter.
- Add sami API documentation.
- Add compression quality to Gmagick.
- Add effects API.
- Add method to get pixel at point in Gmagick.
- Ensure valid background color in rotations.
- Fill lines with color to prevent semi-transparency issues.
- Use
Imagick::resizeImage
instead ofImagick::thumbnailImage
for resizing. - Fix PNG transparency on save ; do not flatten if not necessary.
- Add support for Travis CI.
- Use composer for autoloading.
- Documentation enhancements.
- Add PEAR support.
- Documentation enhancements.
- Add imagine.phar, phar and rake tasks.
- Add
ImagineInterface::read
to read from a stream resource. - Documentation enhancements.
- Fix gifs transparency issues.
- Documentation enhancements.
- Documentation enhancements.
- Add
PointInterface::move
. BoxInterface::scale
can accept floats.- Set antialias mode for GD images.
- Fix png compression.
- Add
Imagine\Fill\Gradient\Linear::getStart
/getEnd
. - Add
Imagine\Image\Color::isOpaque
. - Add Gmagick transparency exceptions.
- Add support for transparency for gif export.
- Add widen/heighten methods for easy scaling to target width/height.
- Add functionals tests to unit test thumbnails creation.
- Add the ability to use hexadecimal notation for
Imagine\Image\Color
construction. - Implement fast linear gradient for Imagick.
- Remove lengthy image histogram comparisons.
- Extract
ManipulatorInterface
fromImageInterface
. - Switch methods to final.
- New method
ImageInterface::getColorAt
. - Introduce
ImagineAware
abstract filter class.
- Fix bug in GD rotate.
- Add environment check to gracefuly skip test.
- Improve api docs.
- Extract
FontInterface
.
- Add check for GD.
- Add rounding and fixed thumbnail logic.
- First tagged version.