NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #2632 most downloaded on Packagist
Image processing for PHP
Last release 7 months ago
25 Feb 2026
Release timing varies
gaps range from 2 weeks to 1.4 years
Most releases are documented
notes for 38 of 48 stable releases
Nothing withdrawn
no release was ever pulled
15 years old
50 releases · first in 2011
Do not call curl_close on PHP 8.0+ (#875, @dmaicher)
Don't call imagedestroy on PHP 8.5+ (#873, @mlocati)
Fix PHP 8.4 deprecation warnings (#865, @alexander-schranz)
One column per quarter.
If a file couldn't be found, we now throw a NotFoundException exception (#853, @playmono)
Fix PHP 8.2 warnings with Point class (#847, @anovsiradj)
Let PHP automatically detect the preferred TLS version (#841, @radli)
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)
Fix PHP 8.0 compatibility, except gmagick - see https://bugs.php.net/bug.php?id=80106 (#740, @ausi)
Handle jfif extension in GD driver (#727, @sylvain-msl-talkspirit)
The GD driver can now load WebP files (#711, #718, @lashus, @ausi)
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)
\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)
ExifMetadataReader now returns all the available metadata, not only EXIF and IFD0 (#701, @mlocati)New ImageInterface::THUMBNAIL_FLAG_NOCLONE flag for thumbnail() to let it modify the original image instance in order to save memory (@mlocati)
ImageInterface::THUMBNAIL_FLAG_NOCLONE flag for thumbnail() 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)
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 ow…
FontInterface method: wrapText - split a text into multiple lines, so that it fits a specific width (@mlocati)FontInterface implementation, it now must implement wrapTextcircle method implementations (@mlocati)dissolve method of ColorInterface normalizes the final value of alpha (@mlocati)dissolve doesn't throw a Imagine\Exception\InvalidArgumentException anymoreThe coalesce method of LayerInterface instances now returns the LayerInterface itself (@mlocati) BREAKING CHANGE if you have your own LayerInterface i…
coalesce method of LayerInterface instances now returns the LayerInterface itself (@mlocati)LayerInterface implementation, it now must return $this__toString method has been added to ColorInterface since all its implementations have it (@mlocati)ColorInterface implementation, it now must implement __toStringoptimize if set, the size of animated GIF files is optimized (@mlocati)paste method now accepts images not fully included in the destination image (@mlocati)save method (@mlocati)rectangle and circle (@mlocati)DrawerInterface you should add these two new methodsgetChannelsMaxValue method has been added to PaletteInterface (@mlocati)PaletteInterface implementation, it now must implement this new methodAdd setMetadataReader/getMetadataReader to ImagineInterface (@mlocati) BREAKING CHANGE if you have your own ImagineInterface implementation, it now mu…
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)getColorAt method of Gmagick images (@mlocati)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)text drawer method on Windows when using relative font file paths (@mlocati)box font method on Windows when using relative font file paths (@mlocati)jpeg_sampling_factors option when saving JPEG images (Gmagick/Imagick only) (@ausi)setMetadataReader/getMetadataReader to ImagineInterface (@mlocati)ImagineInterface implementation, it now must implement those two methodsclone $image as an alternative to $image->copy() (@mlocati)BoxInterface, MetadataReaderInterface, FontInterface, LoaderInterface, LayersInterface, ImageInterface (@mlocati)ImagineInterface implementation, it now must implement the methods of ClassFactoryAwareInterfaceBox until it reaches a dimension less than 1 returns a box with dimension of 1 instead of throwing an exception (@mlocati)Box::scale throwing an exception in this caseBlackWhite, BorderDetection, Negation, Neighborhood (@rejinka)OnPixelBased (@rejinka, @mlocati)thumbnail to allow upscaling images (@vlakoff)$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.brightness (@lenybernard, @mlocati)colvolve available for all graphics libraries except gmagick with version prior to 2.0.1RC2 (@armatronic, @mlocati)/lib/Imagine to /src (@mlocati)Remove Symfony PHPUnit bridge as dependency (@craue)
Fix memory usage on metadata reading (@Seldaek)
Fix wrong array_merge when calling Transformation::getFilters without filters
Stripping image containing an invalid ICC profile fails
Fix invalid namespace usage (#336 @csanquer).
Deprecate quality and filters ManipulatorInterface::save options, use jpeg_quality, png_compression_level and png_compression_filter instead.
quality and filters ManipulatorInterface::save options, use
jpeg_quality, png_compression_level and png_compression_filter instead.Deprecate pear channel installation.
Layers::coalesce.ImageInterface::resize.LayersInterface now extends ArrayAccess, gives support for animated gifs.Gmagick::histogram.* Lazy-load GD layers.
Add documentation for the Grayscale effect.
* Add Grayscale effect. * Drawer::text position fix.
Drawer::text position fix.Add configurable border thickness to drawer interface and implementations.
ImageInterface::strip.Imagick::resizeImage instead of Imagick::thumbnailImage for resizing.* Add support for Travis CI.
* Use composer for autoloading.
* Documentation enhancements.
* Add PEAR support. * Documentation enhancements.
Add imagine.phar, phar and rake tasks.
ImagineInterface::read to read from a stream resource.* Documentation enhancements.
BoxInterface::scale can accept floats.
PointInterface::move.BoxInterface::scale can accept floats.Add Imagine\Fill\Gradient\Linear::getStart/getEnd.
Imagine\Fill\Gradient\Linear::getStart/getEnd.Imagine\Image\Color::isOpaque.Imagine\Image\Color construction.ManipulatorInterface from ImageInterface.ImageInterface::getColorAt.ImagineAware abstract filter class.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →