Getting started
Routing and controllers
Command line
Databases (SQL)
Databases (NoSQL)
Security
Packages
Learn more
- Array helper
- Caching
- Collections
- Command, event and query buses
- Date and time
- File system
- HTML helper
- Humanizer
- Image processing
- Internationalization
- Logging
- Number helper
- Pagination
- Rate limiter
- Retry helper
- Sessions
- String helper
- URL builder
- UUID helper
- Validation
- Views
Official packages
Image processing
The pixel library allows you to manipulate images through a consistent API using either GD or ImageMagick.
Usage
First you'll have to decide whether to use GD or ImageMagick. In this example we'll use the ImageMagick processor.
$image = new Gd('image.png');
Image information
The getHeight method returns the height of your image.
$height = $image->getHeight();
The getWidth method returns the width of your image.
$width = $image->getWidth();
The getDimensions method returns an array containing both the height and width of your image.
$dimensions = $image->getDimensions();
The getTopColors method returns an array of the top n colors in an image, represented as Color class instances. By default, it returns the top five colors, but you can specify a custom number of colors to return.
$topColors = $image->getTopColors();
foreach ($topColors as $color) {
var_dump($color->toHexString());
}
The following methods are available on the Color class:
| Method | Description |
|---|---|
| fromHex($hex) | Creates a new Color instance from a hex value (e.g. "#FF0000") |
| getRed() | Returns the red value (0-255) |
| getGreen() | Returns the green value (0-255) |
| getBlue() | Returns the blue value (0-255) |
| getAlpha() | Returns the alpha value (0-255) |
| toHexString($withAlpha = false) | Returns a hex string representation of the color (e.g. "#FF0000") |
| toRgbString() | Returns a rgb string representation of the color (e.g. "rgb(255, 0, 0)") |
| toRgbaString() | Returns a rgb string representation of the color (e.g. "rgba(255, 0, 0, 0.5)") |
| toHslString() | Returns a hsl string representation of the color (e.g. "hsl(0, 100.0%, 50.0%)") |
| toHslaString() | Returns a hsla string representation of the color (e.g. "hsl(0, 100.0%, 50.0%, 0.5)") |
| toHwbString() | Returns a hwb string representation of the color (e.g. "hwb(0 0.0% 0.0%)") |
| toHwbaString() | Returns a hwba string representation of the color (e.g. "hwb(0 0.0% 0.0% / 0.5)") |
Note: If you want the best color accuracy then you should use the
ImageMagickclass.
Image manipulation
The snapshot method allows you to create a snapshot of your image.
$image->snapshot();
The restore method allows you to restore an image snapshot.
$image->restore();
The apply method allows you to apply an image operation to your image.
$image->apply(new Sharpen);
$image->apply(new Border(new Color(0, 0, 0, 127), width: 10));
Here are all of the included image operations:
| Class | Description | Gd | ImageMagick |
|---|---|---|---|
| Bitonal | Turns the image into a bitonal image | ✓ | ✓ |
| Border | Draws a border around the image | ✓ | ✓ |
| Brightness | Adjusts the brightness of the image (-100 to 100) | ✓ | ✓ |
| Colorize | Colorizes the image with the chosen color | ✓ | ✓ |
| Contrast | Adjusts the contrast of the image (-100 to 100) | ✓ | ✓ |
| Crop | Crops the image to the selected region | ✓ | ✓ |
| Flip | Flips the image | ✓ | ✓ |
| Greyscale | Turns the image into a greyscale image | ✓ | ✓ |
| Negate | Negates the image | ✓ | ✓ |
| Pixelate | Pixelates the image | ✓ | ✓ |
| Resize | Resizes the image to the chosen size | ✓ | ✓ |
| Rotate | Rotates the image | ✓ | ✓ |
| Saturation | Adjusts the saturation of the image (-100 to 100) | ✓ | ✓ |
| Sepia | Applies a sepia filter to the image | ✓ | ✓ |
| Sharpen | Sharpens the image | ✓ | ✓ |
| Temperature | Adjusts the color temperature of the image (-100 to 100) | ✓ | ✓ |
| Watermark | Applies a custom watermark to the image | ✓ | ✓ |
You can also create your own custom image operations by implementing the OperationInterface.
class MyOperation implements OperationInterface
{
#[Override]
public function apply(object &$imageResource): void
{
// Do your custom image operations here
}
}
The getImageBlob method returns the raw binary image data.
$image = $image->getImageBlob();
// You can also tell it to return a different image type
$image = $image->getImageBlob('jpg');
// You can also adjust the image quality in percent (default is 95%)
$image = $image->getImageBlob('jpg', 70);
As the name suggests the save method will save your edited image to disk.
// Override original file
$image->save();
// Create a new file
$image->save('edited_image.png');
// You can also adjust the image quality in percent (default is 95%)
$image->save('edited_image.png', 70);
Image metadata
The library also includes functionality for working with embedded image metadata.
XMP
Reading
The XmpReader class allows you to extract XMP metadata from the image file.
Note: The XMP reader relies on
FFIandlibexempi. The reader will attempt to auto-detect the shared library, but depending on your setup, you may need to specify it manually.
$reader = new XmpReader('image.tif');
// You can specify the shared library if needed
$reader = new XmpReader('image.tif', 'libexempi.so.8');
The getXml method returns all the XMP data as XML.
$xml = $reader->getXml();
// You can also cast the reader object to a string
$xml = (string) $reader;
The getProperties method returns all the XMP properties as objects.
$properties = $reader->getProperties();
// You can also select the properties from a specific namespace
$properties = $reader->getProperties('http://purl.org/dc/elements/1.1/');
The getProperty method allows you to get a specific property. The first parameter is the property namespace and the second is the property name.
$property = $reader->getProperty('http://purl.org/dc/elements/1.1/', 'title');
echo $property->value;