Image formats
ALTO Image recognizes a stable set of image formats, but recognition does not mean that the installed driver can decode or encode every one. Check the four distinct capabilities before choosing a workflow:
- Known means
Formatrepresents the format and its common extensions and media type. - Detectable means ALTO can identify and inspect a supported source header.
- Readable means the selected GD or Imagick build can decode its pixels.
- Writable means that build can encode a requested output.
Run the deployment's capability check for the authoritative read and write lists:
$ vendor/bin/image doctor
Supported formats
| Format | Common input names | Alpha | Animation | Notes |
|---|---|---|---|---|
| JPEG | .jpg, .jpeg, .jpe, .jfif |
No | No | Widely readable and writable; quality is lossy. |
| PNG | .png |
Yes | No | Lossless output; metadata support depends on the driver. |
| WebP | .webp |
Yes | Yes | Build-dependent read and write support; only the first input frame is used. |
| AVIF | .avif, .avifs |
Yes | Yes | Requires a matching GD build or ImageMagick delegate. |
| JPEG XL | .jxl |
Yes | Yes | Known by ALTO; current driver support depends on installed delegates. |
| HEIC | .heic, .heif, .hif |
Yes | Yes | Imagick only when its ImageMagick build has a HEIC delegate. |
| TIFF | .tif, .tiff |
Yes | No | Imagick support depends on its ImageMagick delegates. |
| GIF | .gif |
Yes | Yes | GD and Imagick use the first input frame. |
| BMP | .bmp, .dib |
No | No | GD support depends on its build; Imagick depends on delegates. |
| SVG | .svg, .svgz |
Yes | No | Vector source; Imagick rasterizes it at its declared size. GD refuses it. |
Animation in the table describes the file format, not multi-frame processing by this package. ALTO Image currently renders the first frame and reports that approximation. SVG can be detected and planned without implying that a raster driver is available.
Select a format
Format::of() accepts a format name, extension, or media type. It normalizes
aliases such as jpg, .tiff, and image/svg+xml:
<?php
use Alto\Image\Format;
$format = Format::of('image/webp');
echo $format->extension(); // webp
echo $format->mime(); // image/webpThe enum also exposes supportsAlpha(), supportsAnimation(), isVector(),
isLossy(), and a format-specific defaultQuality().
Check the active driver
Driver capabilities are discovered at runtime. Capabilities::$reads and
Capabilities::$writes contain the exact Format cases available in that
installed build. A filename extension alone does not prove read or write
support.
Use Drivers to compare GD and Imagick.
Encode output
Encoding selects the output format and its compression settings.
Named formats
Use a named method for common settings:
<?php
use Alto\Image\Effort;
use Alto\Image\Image;
$image = Image::open('photo.png')
->fit(1600, 1600)
->webp(quality: 82, effort: Effort::Best);Available methods are jpeg(), png(), webp(), and avif().
Full configuration
Use encode() for byte limits, progressive JPEG, or lossless output:
<?php
use Alto\Image\Format;
use Alto\Image\Image;
$image = Image::open('photo.png')->encode(
format: Format::Webp,
quality: 82,
maxBytes: 200_000,
);A byte limit can require several encoding passes. Use encode() with another
Format case when the selected driver reports it as writable
through vendor/bin/image doctor.
The complete encoding request includes the format, quality, effort, metadata policy, byte limit, progressive mode, lossless mode, and driver-specific options. The request remains immutable when one of these settings changes.