Instantiation
Read & Create Images
3.8M Downloads / Month
Open Source MIT License
3.8M Downloads / Month
Open Source MIT License
Learn how to manage and process images with the Intervention Image Manager. Read and decode images from multiple sources like file paths, Base64, and Data Uri, or create custom images and animations using PHP.
public ImageManager::decode(mixed $source, null|string|array|DecoderInterface $decoders = null): ImageInterface
With a configured Image Manager it is
possible to read images from different sources. The decode() method accepts
all available image sources. A complete list can be found below.
| Name | Type | Description |
|---|---|---|
| source | mixed | Image source |
| decoders | null, string, array or DecoderInterface | Decoder(s) to process the input data, by default decoders for all image sources are tried |
The following source argument formats are accepted.
SplFileInfo objectDataUriInterfaceTo decode the source, you can optionally specify a decoding strategy with the second parameter. This can be an array of class names or objects of decoders to be tried in sequence. It is also possible to pass a single object or class name of a decoder. If the second parameter is not set, all available images decoders will be tried.
use Intervention\Image\ImageManager; use Intervention\Image\Drivers\Imagick\Driver; // create new manager instance with desired driver $manager = ImageManager::usingDriver(Driver::class); // read image from filesystem $image = $manager->decode('images/example.jpg'); // read image from binary data $image = $manager->decode(file_get_contents('images/example.jpg'));
use Intervention\Image\ImageManager; use Intervention\Image\Drivers\Imagick\Driver; use Intervention\Image\Decoders\DataUriImageDecoder; use Intervention\Image\Decoders\Base64ImageDecoder; use Intervention\Image\Decoders\FilePathImageDecoder; // create new manager instance with desired driver $manager = ImageManager::usingDriver(Driver::class); // read image only from data uri or base64 encoded data $image = $manager->decode($input, [ DataUriImageDecoder::class, Base64ImageDecoder::class, ]); // read image only from file path $image = $manager->decode($input, FilePathImageDecoder::class); // same with object instead of class name $image = $manager->decode($input, new FilePathImageDecoder());
public ImageManager::decodePath(string|Stringable $path): ImageInterface
Decode an image by using the given path in filesystem.
| Name | Type | Description |
|---|---|---|
| path | string or Stringable | Image path |
use Intervention\Image\ImageManager; use Intervention\Image\Drivers\Imagick\Driver; // create new manager instance with desired driver $manager = ImageManager::usingDriver(Driver::class); // read image from filesystem $image = $manager->decodePath('images/example.jpg');
public ImageManager::decodeBinary(string|Stringable $binary): ImageInterface
Create an image instance by decoding the given raw binary image data.
| Name | Type | Description |
|---|---|---|
| binary | string or Stringable | Binary image data |
use Intervention\Image\ImageManager; use Intervention\Image\Drivers\Imagick\Driver; // create new manager instance with desired driver $manager = ImageManager::usingDriver(Driver::class); // read image from binary $image = $manager->decodeBinary(file_get_contents('images/example.jpg'));
public ImageManager::decodeSplFileInfo(SplFileInfo $splFileInfo): ImageInterface
Decode an image by decoding the image data of the given SplFileInfo instance.
This method can be used to handle image file uploads in the Laravel or Symfony
frameworks from Illuminate\Http\UploadedFile or Symfony\Component\HttpFoundation\File\UploadedFile.
| Name | Type | Description |
|---|---|---|
| splFileInfo | SplFileInfo | Instance of SplFileInfo with image data |
use Intervention\Image\ImageManager; use Intervention\Image\Drivers\Imagick\Driver; // create new manager instance with desired driver $manager = ImageManager::usingDriver(Driver::class); // read image from splFileInfo object $image = $manager->decodeSplFileInfo(new SplFileInfo('example.jpg'));
public ImageManager::decodeBase64(string|Stringable $base64): ImageInterface
Create an image instance by decoding the given base64 encoded image data.
| Name | Type | Description |
|---|---|---|
| base64 | string or Stringable | Base64 encoded image data |
use Intervention\Image\ImageManager; use Intervention\Image\Drivers\Imagick\Driver; // create new manager instance with desired driver $manager = ImageManager::usingDriver(Driver::class); // read image from base64 encoded data $image = $manager->decodeBase64('Zm9vYmFyYmF6MTIzNDU2Nzg5MA...');
public ImageManager::decodeDataUri(string|Stringable|DataUriInterface $dataUri): ImageInterface
Create an image instance by decoding the image in the given data uri scheme.
| Name | Type | Description |
|---|---|---|
| dataUri | string, Stringable or DataUriInterface | Image data encoded as data uri scheme. |
use Intervention\Image\ImageManager; use Intervention\Image\Drivers\Imagick\Driver; // create new manager instance with desired driver $manager = ImageManager::usingDriver(Driver::class); // read image from data uri $image = $manager->decodeDataUri('data:image/jpeg,Zm9vYmFyYmF6MTIzNDU2Nzg5MA...');
public ImageManager::decodeStream(mixed $stream): ImageInterface
Decode an image by using the given path in filesystem.
| Name | Type | Description |
|---|---|---|
| stream | resource | Stream resource with image data |
use Intervention\Image\ImageManager; use Intervention\Image\Drivers\Imagick\Driver; // create new manager instance with desired driver $manager = ImageManager::usingDriver(Driver::class); // open new stream resource $stream = fopen('example.jpg', 'r'); // read image from stream $image = $manager->decodeStream($stream);
public function createImage(int $width, int $height, null|callable|AnimationFactoryInterface $animation = null): ImageInterface;
Reading existing image sources is one thing, but what if you want to create
your own images? Intervention Images can help you with that. You start with an
instance of the Intervention\Image\ImageManager class and call the
createImage() method with the desired image size as arguments. See the
following example:
By default the image is created with a transparent background. If you want to define a background color instead use the fill() method after creation.
Optionally you can pass a callback to add animation frames and create a animated image and define the delay time of the individual animation frames. It should be noted that the animation created this way must be decoded in a format that supports animations.
Animations are possible in all supplied drivers. Read more on how to modify animated images.
| Name | Type | Description |
|---|---|---|
| width | integer | Image width |
| height | integer | Image height |
| animation | null, callable or AnimationFactoryInterface | Optional callback for defining animation frames |
use Intervention\Image\ImageManager; use Intervention\Image\Drivers\Imagick\Driver; // create new manager instance with desired driver $manager = ImageManager::usingDriver(Driver::class); // create new image 640x480 $image = $manager->createImage(640, 480); // create new image 512x512 with gray background $image = $manager->createImage(512, 512)->fill('ccc'); // create new animated image 120x80 with five animation frames $image = $manager->createImage(120, 80, function (AnimationFactoryInterface $animation): void { $animation->add('image.png', .25)->pixelate(20); $animation->add('image.png', .25)->pixelate(15); $animation->add('image.png', .25)->pixelate(10); $animation->add('image.png', .25)->pixelate(5); $animation->add('image.png', .25); });