An Imagick object represents image data; dimensions, format and operations matter when editing or exporting an image.
What Is Imagick::compositeImage in PHP?
Composites a source image over the current image with a chosen compose operator and offset.
Simplified call syntax (optional overload parameters are omitted where applicable):
Imagick::compositeImage(Imagick $source, int $compose, int $x, int $y): bool
$source— An Imagick object containing the image to composite.$compose— The Imagick COMPOSITE_* operator controlling blending.$x— Horizontal coordinate in pixels.$y— Vertical coordinate in pixels.
Requirement: The PECL Imagick extension and ImageMagick with relevant format support must be available.
Example 1: Understanding the Basic Behavior
<?php
$image = new Imagick();
$image->newImage(160, 90, new ImagickPixel("white"));
$image->setImageFormat("png");
$overlay = new Imagick();
$overlay->newImage(40, 40, new ImagickPixel("navy"));
$result = $image->compositeImage($overlay, Imagick::COMPOSITE_OVER, 10, 10);
var_dump($result);
$image->clear();
Requires PECL Imagick and format support in ImageMagick.
Explanation: Composites a source image over the current image with a chosen compose operator and offset.
Example 2: Testing Another Case
<?php
$image = new Imagick();
$image->newImage(240, 120, new ImagickPixel("lightgray"));
$image->setImageFormat("png");
$overlay = new Imagick();
$overlay->newImage(40, 40, new ImagickPixel("navy"));
$result = $image->compositeImage($overlay, Imagick::COMPOSITE_OVER, 10, 10);
var_dump($result);
$image->clear();
Requires PECL Imagick and format support in ImageMagick.
Explanation: ImageMagick must support the source format; process untrusted files with limits on pixel count, file size and available resources.
Practical Example: Applying the Operation
<?php
$image = new Imagick();
$image->newImage(320, 180, new ImagickPixel("ivory"));
$image->setImageFormat("png");
$overlay = new Imagick();
$overlay->newImage(40, 40, new ImagickPixel("navy"));
$result = $image->compositeImage($overlay, Imagick::COMPOSITE_OVER, 10, 10);
var_dump($result);
$image->clear();
Requires PECL Imagick and format support in ImageMagick.
Explanation: Operations can consume substantial memory; constrain input dimensions and handle decode failures.
Important Behavior and Edge Cases
- ImageMagick must support the source format; process untrusted files with limits on pixel count, file size and available resources.
- Operations can consume substantial memory; constrain input dimensions and handle decode failures.
Comparison With Related Approaches
| Approach | When to Use It |
|---|---|
Imagick::compositeImage | Composites a source image over the current image with a chosen compose operator and offset. |
Imagick::drawImage() | compositeImage() places a source image into an image using a composition operator; drawImage() applies vector drawing instructions from ImagickDraw. |
Common Beginner Mistakes
| Mistake | Correct Approach |
|---|---|
| Applying Imagick::compositeImage() without validating the source image or operation arguments. | ImageMagick must support the source format; process untrusted files with limits on pixel count, file size and available resources. |
| Choosing Imagick::drawImage() without checking whether it provides the same result. | compositeImage() places a source image into an image using a composition operator; drawImage() applies vector drawing instructions from ImagickDraw. |
Key Takeaways
- Composites a source image over the current image with a chosen compose operator and offset.
- ImageMagick must support the source format; process untrusted files with limits on pixel count, file size and available resources.
- Operations can consume substantial memory; constrain input dimensions and handle decode failures.
The examples demonstrate where Imagick::compositeImage fits within image processing. Verify the relevant preconditions whenever you adapt the code to real data.