Avoid calling imageantialias if it's not available (#713, @ahukkanen)
1.2.1 (2019-06-03)
Silence call to \Imagick::setImageOpacity() in order to prevent deprecation error with Imagick 3.4.4 and ImageMagick 6 (#715, @samdark, @mlocati)
1.2.0 (2018-12-07)
ExifMetadataReader now returns all the available metadata, not only EXIF and IFD0 (#701, @mlocati)
1.1.0 (2018-10-25)
New ImageInterface::THUMBNAIL_FLAG_NOCLONE flag for thumbnail() to let it modify the original image instance in order to save memory (@mlocati)
1.0.2 (2018-10-24)
Check that the Imagick PHP extension is not compiled using ImageMagick version 7.0.7-32 because it does not work correctly (@mlocati)
1.0.1 (2018-09-27)
Box now rounds the width/height it receives (previously it discarded the decimal points) (@mlocati)
1.0.0 (2018-09-25)
New FontInterface method: wrapText - split a text into multiple lines, so that it fits a specific width (@mlocati) BREAKING CHANGE if you have your own FontInterface implementation, it now must implement wrapText
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 of ColorInterface normalizes the final value of alpha (@mlocati) BREAKING CHANGEdissolve doesn't throw a Imagine\Exception\InvalidArgumentException anymore
1.0.0-alpha2 (2018-09-08)
The coalesce method of LayerInterface instances now returns the LayerInterface itself (@mlocati) BREAKING CHANGE if you have your own LayerInterface implementation, it now must return $this
The __toString method has been added to ColorInterface since all its implementations have it (@mlocati) BREAKING CHANGE if you have your own ColorInterface 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 and circle (@mlocati) BREAKING CHANGE if you have your own implementation of DrawerInterface you should add these two new methods
The getChannelsMaxValue method has been added to PaletteInterface (@mlocati) BREAKING CHANGE if you have your own PaletteInterface implementation, it now must implement this new method
1.0.0-alpha1 (2018-08-28)
Imagine is now tested under Windows too (@mlocati)
Add Imagine\File\LoaderInterface that allows loading remote images with any imaging driver (@mlocati).
You can use your own LoaderInterface implementation so that you can for instance use curl or any other library.
flipHorizontally and flipVertically 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 the Autorotate 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)
Add support to new image type constants of Imagick (@ausi)
Check that Imagick correctly supports profiles (@ausi)
Add setMetadataReader/getMetadataReader to ImagineInterface (@mlocati) BREAKING CHANGE if you have your own ImagineInterface 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 own ImagineInterface implementation, it now must implement the methods of ClassFactoryAwareInterface
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 on Box::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 the ManipulatorInterface constants THUMBNAIL_INSET, THUMBNAIL_OUTBOUND were changed from string values to integers.
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.