Intervention/image · error · ModifierException

Failed to apply Intervention\Image\Drivers\Imagick\Modifiers

Error message

Failed to apply Intervention\Image\Drivers\Imagick\Modifiers\ColorspaceModifier, unable to transform image colorspace

What it means

Thrown by the Imagick ColorspaceModifier when Imagick::transformImageColorspace() returns false during $image->colorspace($target). The target constant is resolved from the library's colorspace classes before the call, so the operation itself failing (not the mapping) triggers this variant — no previous exception is attached.

Source

Thrown at src/Drivers/Imagick/Modifiers/ColorspaceModifier.php:40

class ColorspaceModifier extends GenericColorspaceModifier implements SpecializedInterface
{
    /**
     * @throws ModifierException
     * @throws NotSupportedException
     */
    public function apply(ImageInterface $image): ImageInterface
    {
        $colorspace = $this->targetColorspace();
        $imagick = $image->core()->native();

        try {
            $result = $imagick->transformImageColorspace(
                $this->imagickColorspaceOrFail($colorspace),
            );

            if ($result === false) {
                throw new ModifierException(
                    'Failed to apply ' . self::class . ', unable to transform image colorspace',
                );
            }
        } catch (ImagickException $e) {
            throw new ModifierException(
                'Failed to apply ' . self::class . ', unable to transform image colorspace',
                previous: $e,
            );
        }

        return $image;
    }

    /**
     * @throws ModifierException
     * @throws NotSupportedException
     */
    private function imagickColorspaceOrFail(ColorspaceInterface $colorspace): int

View on GitHub (pinned to 5598b9e397)

Solutions

  1. Reproduce via CLI (convert in.jpg -colorspace CMYK out.jpg) to expose the environment-level cause; install/enable the LittleCMS (LCMS) delegate if CMYK/ICC fails.
  2. Raise ImageMagick resource limits for large images or convert a scaled copy.
  3. Ensure the source image fully decoded and the wand was not reused after a prior failure.
  4. Update ImageMagick/ext-imagick to matching current versions.

Example fix

// before
$image->colorspace(\Intervention\Image\Colors\Cmyk\Colorspace::class); // false -> ModifierException

// after
\Imagick::setResourceLimit(\Imagick::RESOURCETYPE_MEMORY, 512 * 1024 * 1024);
$image->colorspace(\Intervention\Image\Colors\Cmyk\Colorspace::class);
Defensive patterns

Strategy: fallback

Validate before calling

// environment probe: can this build transform colorspaces?
$probe = new \Imagick();
$probe->newImage(4, 4, new \ImagickPixel('white'));
$canTransform = $probe->transformImageColorspace(\Imagick::COLORSPACE_CMYK) !== false;
$probe->destroy();

Try / catch

use Intervention\Image\Exceptions\ModifierException;
try {
    $image->colorspace(\Intervention\Image\Colors\Cmyk\Colorspace::class);
} catch (ModifierException $e) {
    // fallback: keep sRGB and flag for a worker with the LCMS delegate
    logger()->warning('CMYK conversion unavailable in this environment');
}

Prevention

When it happens

Trigger: Calling $image->colorspace() with any supported class (Rgb, Cmyk, Hsl, Hsv, Oklab, Oklch) on an image whose wand cannot perform the transform: CMYK conversion on images missing ICC handling in the build, resource exhaustion, or degraded wand state.

Common situations: Converting user uploads to CMYK for print on ImageMagick builds without LittleCMS delegates; converting to sRGB from 16-bit/professional-color sources; batch jobs hitting policy.xml limits mid-conversion.

Related errors


AI-assisted analysis of Intervention/image@5598b9e397 (2026-08-23). Data as JSON: /api/errors/8eb39be6f6336097. Report an issue: GitHub.