Upgrade Guide
Upgrade from Intervention Image 3.x to 4.x
4.1M Downloads / Month
Open Source MIT License
4.1M Downloads / Month
Open Source MIT License
Learn how to migrate from Intervention Image version 3 to version 4. See what new features are available and what changes have been made in the update.
The revised image decoding interface introduces a more transparent approach to handling image sources. Allowing image sources to be addressed directly instead of relying on a single universal method.
ImageManagerInterface::decode()ImageManagerInterface::decodePath()ImageManagerInterface::decodeBinary()ImageManagerInterface::decodeBas64()ImageManagerInterface::decodeDataUri()ImageManagerInterface::decodeSplFileInfo()ImageManagerInterface::decodeStream()Read more about decoding methods
At the same time, error and exception messages have been refined to provide clear, immediate insight into what went wrong. These improvements include a restructured exception system with a well-defined hierarchy that makes handling exceptions easier.
Intervention\Image\Color to create and parse more easilyNamedColor::class for css color names.ColorInterface::withTransparency(), ColorInterface::withBrightness(), ColorInterface::withSaturation and ColorInterface::withInversion()DriverInterface::version() to check internal version of driverIt is very likely that you will need to make these adjustments when you update to version 4.
ImageManagerInterface::read() is now handled by ImageManagerInterface::decode() or the other decode methodsImageManagerInterface::withDriver() is now handled by Image::usingDriver()ImageManagerInterface::animate() is replaced by universal ImageManagerInterface::createImage()ImageInterface::toJpeg() and ImageInterface::toJpg() are now handled by iImageInterface::encodeUsingFormat()ImageInterface::toPng() is now handled by ImageInterface::encodeUsingFormat()ImageInterface::toGif() is now handled by ImageInterface::encodeUsingFormat()ImageInterface::toJp2() and ImageInterface::toJpeg2000() are replaced by ImageInterface::encodeUsingFormat()ImageInterface::toWebp() is replaced by ImageInterface::encodeUsingFormat()ImageInterface::toBitmap() and ImageInterface::toBmp() are replaced by ImageInterface::encodeUsingFormat()ImageInterface::toAvif() is replaced by ImageInterface::encodeUsingFormat()ImageInterface::toHeic() is replaced by ImageInterface::encodeUsingFormat()ImageInterface::toTiff() and ImageInterface::toTif() are replaced by ImageInterface::encodeUsingFormat()ImageInterface::encodeByMediaType() is replaced by ImageInterface::encodeUsingMediaType()ImageInterface::encodeByPath() is replaced by ImageInterface::encodeUsingPath()ImageInterface::encodeByExtension() is replaced by ImageInterface::encodeUsingFileExtension()ImageInterface::encodeByExtension() is replaced by ImageInterface::encodeUsingFileExtension()ImageInterface::pickColor() was renamed to ImageInterface::colorAt() and signature has changed, argument $frame_key is now $frameImageInterface::pickColors() was renamed to ImageInterface::colorsAt()ImageInterface::pad() was renamed to ImageInterface::containDown() with different signaturedirection parameterImageInterface::flop() was removed. Use ImageInterface::flip() with direction parameter Direction::HORIZONTALImageInterface::place() was renamed to ImageInterface::insert() with a different signature. offset_x was renamed to x and offset_y was renamed to y, opacity was renamed to transparency with float instead of int and updated argument orderImageInterface::save() only processes known image file extensions. Use EncodedImageInterface::save() if you want to save with unknown file extensions.EncodedImageInterface::toDataUri() now returns DataUriInterface::class instead of `string“FontInterface::filename() is replaced by FontInterface::filepath()FontInterface::hasFilename() is replaced by FontInterface::hasFile()FontInterface::setFilename() is replaced by FontInterface::setFilepath()ColorInterface::convertTo() was renamed to ColorInterface::toColorspace()blendingColor was renamed to backgroundColorImageInterface::rotate() rotates clockwise by default.ImageInterface::blendTransparency() was renamed to ImageInterface::fillTransparentAreas() with a different signature allowing (semi) transparent colorsImageInterface::setBlendingColor() was renamed to ImageInterface::setBackgroundColor()ImageInterface::blendingColor() was renamed to ImageInterface::backgroundColor()transparent is no longer supported. Use Intervention\Image\Color::transparent() instead$prefix of ColorInterface::toHex() has now a boolean typeImageInterface::reduceColors() has a different type and default value of the argument $background. Background defaults now to the configured background color instead of transparent.It is possible that you will need to make these adjustments when updating if you have delved deeper into the functions.
ColorInterface::toArray() use ColorInterface::channels() and map to desired formatColorInterface::normalize() use ColorInterface::channels() and map to desired formatbackground to null in ImageInterface::rotate()background to null in ImageInterface::resizeCanvas()background to null in ImageInterface::resizeCanvasRelative()background to null in ImageInterface::contain()background to null in ImageInterface::containDown() former ImageInterface::pad()background to null in ImageInterface::crop()offset_x to x and offset_y to y$per_unit has change to $unit with different signature in Resolution::classDrawableFactoryInterface::init() is replaced by DrawableFactoryInterface::create()DrawableFactoryInterface::create() is replaced by DrawableFactoryInterface::drawable()DriverInterface::handleInput() is replaced by DriverInterface::handleImageInput(), DriverInterface::handleColorInput()CollectionInterface::empty() was renamed to CollectionInterface::clear()FontFactory::valign() was replaced with FontInterface::align()FontInterface::valignment() was renamed to FontInterface::verticalAlignment()FontInterface::setValignment() was renamed to FontInterface::setVerticalAlignment()FontInterface::alignment() was renamed to FontInterface::horizontalAlignment()FontInterface::setAlignment() was renamed to FontInterface::setHorizontalAlignment()ImageInterface::greyscale() was renamed to ImageInterface::grayscale()ColorInterface::isGreyscale() was renamed to ColorInterface::isGrayscale()__construct() or create() methods of colors are now defined as float values between 0 and 1FrameInterface::dispose() was rename to FrameInterface::disposalMethod()FrameInterface::setDispose() was renamed to FrameInterface::setDisposalMethod()ImageManagerInterface::driver() was removed but you can use the public $driver property.FileInterface::toFilePointer() was renamed to FileInterface::toStream()transparent is no longer supported. UseIntervention\Image\Color::transparent() insteadYou will probably only need to make these adjustments when updating if you use the API extensively and have written your own drivers or modifiers.
BlendTransparencyModifer::class was renamed to FillTransparentAreasModifier::classProfileInterface::class requires implementation of ::fromPath()DriverInterface::class requires implementation of __construct()DriverInterface::class requires implementation of createCore()DriverInterface::specialize() with DriverInterface::specializeModifier(), DriverInterface::specializeAnalyzer(), DriverInterface::specializeDecoder() and DriverInterface::specializeEncoder()DriverInterface::handleColorInput() has null as defaultFrameInterface::__construct() has changed, argument $offset_left is know $offsetLeft and $offset_top is now $offsetTopPixelColorAnalyzer::__construct() has changed, argument $frame_key is know $frameColorChannelInterface::max() and ColorChannelInterface::min() are now staticColorChannelInterface::toInt() was removed use ColorChannelInterface::value() insteadColorChannelInterface::colorFromNormalized() requires now a static implementationColorChannelInterface::normalize() was renamed to ColorChannelInterface::normalizedValue()CoreInterface::class now requires implementation of CoreInterface::meta()RectangleResizer::class was renamed to Resizer::classGreyscaleModifier::class was renamed to GrayscaleModifier::classDrawableFactoryInterface::__invoke() was removed, use DrawableFactoryInterface::build() or DrawableFactoryInterface::drawable()FontFactory::__invoke() was removed, use FontFactory::build() or FontFactory::font()AnimationFactory::__invoke() was removed, use AnimationFactory::build() or AnimationFactory::animation()InputHandler::withDecoders() was renamed to InputHandler::usingDecoders()ColorInterface::class now requires to implement ColorInterface::withTransparency()ColorInterface::class now requires to implement ColorInterface::alpha()topLeftPoint() and bottomRightPoint() from Rectangle::classColorChannelInterface::__construct() from interfaceDriverInterface::createAnimation()SizeInterface::relativePositionTo() was renamed to SizeInterface::offsetTo()DrawableInterface requires the implementation of factory() and adjust().ColorProcessorInterface::colorToNative() was renamed to ColorProcessorInterface::export()ColorProcessorInterface::nativeToColor() was renamed to ColorProcessorInterface::import()