Drivers

ALTO Image selects Imagick when it is available, then GD. Override selection for one request with using():

<?php

use Alto\Image\Driver\Gd\GdDriver;
use Alto\Image\Image;

$result = Image::open('photo.jpg')
    ->using(new GdDriver())
    ->fit(1200, 1200)
    ->webp()
    ->render();

Run vendor/bin/image doctor for the formats and delegates available on the current machine.

Built-in drivers

Feature GD Imagick
Raster input and output Depends on compiled formats Depends on compiled delegates
Animated input First frame only First frame only
Vector input No Rasterized at declared size
Metadata preservation No Supported where the delegate permits it
ICC profile conversion No Requires LCMS
Local operation behavior Some effects are approximate Arbitrary-angle rotation may be approximate
Batch execution One decode per rendered source batch One decode per rendered source batch

First-frame reads and vector rasterization are reported as Approximate, not silent exact support. Encoding effort and policy options can also vary by format and driver.

Capability levels

Drivers answer each concrete request with one of three levels:

  • Exact: performed as specified.
  • Approximate: performed with a documented degradation.
  • No: refused during negotiation.

When work is approximate, Result::$degradations explains the difference. Negotiation fails before decoding when no driver can perform the request.

Third-party drivers

Implement DriverInterface and verify it with the public conformance toolkit. See Writing a driver.