Start · Sprachen · PHP · Referenz · imageinterlace

imageinterlace

Funktion

Aktiviert oder deaktiviert den Interlace-Modus für ein GD-Bild und gibt den aktuellen Interlace-Status zurück.

seit PHP 4.0.0 Kategorie: image

Signatur

imageinterlace(GdImage $image, ?bool $enable = null): bool

Beschreibung

imageinterlace() schaltet das Interlacing für ein mit GD erzeugtes Bild ein oder aus. Interlacing ist ein Verfahren, bei dem ein Bild in mehreren Durchläufen progressiv aufgebaut wird, anstatt Zeile für Zeile von oben nach unten. Besonders beim JPEG-Format führt dies zu sogenannten Progressive JPEGs, die im Browser schrittweise in zunehmender Qualität angezeigt werden.

Wird $enable auf true gesetzt, wird der Interlace-Modus aktiviert. Mit false wird er deaktiviert. Wird kein zweites Argument übergeben (oder null), gibt die Funktion lediglich den aktuellen Status zurück, ohne ihn zu ändern.

Bei JPEG-Bildern, die anschließend mit imagejpeg() gespeichert werden, erzeugt der aktivierte Interlace-Modus ein Progressive JPEG. Diese Dateien sind häufig etwas kleiner und werden von modernen Browsern bevorzugt, da sie eine bessere Nutzererfahrung beim Laden über langsame Verbindungen bieten. Bei PNG-Bildern erzeugt es ein Adam7 interlaced PNG.

Die Funktion gibt den aktuellen Interlace-Status als bool zurück – true wenn Interlacing aktiv ist, false wenn nicht.

Parameter

Name Typ Default Beschreibung
$image Pflicht GdImage Ein GD-Bildobjekt, wie es von Funktionen wie imagecreatetruecolor(), imagecreatefromjpeg() usw. zurückgegeben wird.
$enable bool|null null Gibt an, ob Interlacing aktiviert (true) oder deaktiviert (false) werden soll. Wird null übergeben oder der Parameter weggelassen, wird der Status nicht verändert, sondern nur abgefragt.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn Interlacing für das Bild aktiv ist, andernfalls false. Bei einem Fehler (ungültiges Bildobjekt) wird ebenfalls false zurückgegeben.

Beispiele

Progressive JPEG erzeugen und speichern

<?php
// Bild aus einer bestehenden JPEG-Datei laden
$image = imagecreatefromjpeg('foto.jpg');

if ($image === false) {
    die('Bild konnte nicht geladen werden.');
}

// Interlace-Modus aktivieren (Progressive JPEG)
imageinterlace($image, true);

// Prüfen, ob Interlacing aktiv ist
$status = imageinterlace($image);
echo 'Interlacing aktiv: ' . ($status ? 'Ja' : 'Nein') . PHP_EOL;

// Als Progressive JPEG speichern (Qualität 85)
imagejpeg($image, 'foto_progressiv.jpg', 85);

// Speicher freigeben
imagedestroy($image);
?>
Interlacing aktiv: Ja

Interlaced PNG erstellen

<?php
// Neues True-Color-Bild erstellen
$image = imagecreatetruecolor(400, 300);

// Hintergrundfarbe setzen
$blau = imagecolorallocate($image, 0, 102, 204);
imagefill($image, 0, 0, $blau);

// Text hinzufügen
$weiss = imagecolorallocate($image, 255, 255, 255);
imagestring($image, 5, 100, 130, 'Interlaced PNG', $weiss);

// Adam7-Interlacing für PNG aktivieren
imageinterlace($image, true);

// Als interlaced PNG speichern
imagepng($image, 'bild_interlaced.png');

echo 'Interlaced PNG gespeichert.' . PHP_EOL;

imagedestroy($image);
?>
Interlaced PNG gespeichert.

// Wichtig · Fallstricke

Hinweis zu PHP 8.0: Ab PHP 8.0 wurde der $image-Parameter von einer Ressource (resource) auf ein GdImage-Objekt umgestellt. Code, der noch resource-Typen verwendet, muss entsprechend angepasst werden.

Hinweis zu PHP 8.0: Der zweite Parameter $enable war vor PHP 8.0 ein int (0 oder 1). Ab PHP 8.0 ist er ein ?bool. Beim Übergeben von null (oder keinem Argument) wird der aktuelle Status nur abgefragt, nicht geändert – dieses Verhalten gilt ab PHP 8.0.

Progressive JPEGs können von älteren Bildverarbeitungsprogrammen oder -bibliotheken möglicherweise nicht korrekt dargestellt werden. Für die Webnutzung sind sie jedoch bestens geeignet und von allen modernen Browsern unterstützt.