Start · Sprachen · PHP · Referenz · imagejpeg

imagejpeg

Funktion

Gibt ein GD-Bildobjekt als JPEG aus – entweder direkt an den Browser oder in eine Datei.

seit PHP 4.0.0 Kategorie: image

Signatur

imagejpeg(GdImage $image, resource|string|null $file = null, int $quality = -1): bool

Beschreibung

imagejpeg() wandelt ein GdImage-Objekt in das JPEG-Format um und schreibt die erzeugten Bilddaten entweder in eine Datei oder direkt in den Ausgabepuffer (Browser). Die Funktion gehört zur GD-Bibliothek und wird typischerweise eingesetzt, um dynamisch generierte oder bearbeitete Bilder zu speichern oder über HTTP auszuliefern.

Wird der Parameter file weggelassen oder auf null gesetzt, sendet PHP die JPEG-Daten direkt an den Ausgabepuffer. In diesem Fall sollte vor dem Aufruf der korrekte Content-Type-Header (header('Content-Type: image/jpeg')) gesendet werden, damit der Browser das Bild korrekt interpretiert.

Der Parameter quality steuert den Kompromiss zwischen Dateigröße und Bildqualität: Werte von 0 (maximale Komprimierung, schlechteste Qualität) bis 100 (minimale Komprimierung, beste Qualität) sind möglich. Der Standardwert -1 verwendet die in der php.ini oder der GD-Bibliothek definierte Standardqualität (üblicherweise 75).

JPEG eignet sich besonders für Fotos und Bilder mit vielen Farbnuancen, nicht jedoch für Grafiken mit harten Kanten, Text oder Transparenz, da das JPEG-Format verlustbehaftet ist und keine Transparenz unterstützt.

Parameter

Name Typ Default Beschreibung
$image Pflicht GdImage Das zu exportierende GD-Bildobjekt, das z. B. mit imagecreatetruecolor(), imagecreatefromjpeg() oder einer anderen imagecreatefrom*()-Funktion erzeugt wurde.
$file resource|string|null null Pfad zur Zieldatei als String, eine geöffnete Datei-Ressource oder null. Bei null werden die JPEG-Daten direkt in den Ausgabepuffer geschrieben.
$quality int -1 Qualitätsstufe von 0 (höchste Komprimierung, niedrigste Qualität) bis 100 (geringste Komprimierung, beste Qualität). -1 verwendet den Standardwert der GD-Bibliothek (ca. 75).

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. wenn die Datei nicht geschrieben werden kann oder das Bildobjekt ungültig ist).

Beispiele

JPEG direkt an den Browser ausgeben

<?php
// Bild erstellen
$image = imagecreatetruecolor(200, 100);
$bg    = imagecolorallocate($image, 30, 144, 255);
imagefill($image, 0, 0, $bg);

$white = imagecolorallocate($image, 255, 255, 255);
imagestring($image, 5, 40, 35, 'Hallo JPEG!', $white);

// Korrekten Content-Type setzen und Bild senden
header('Content-Type: image/jpeg');
imagejpeg($image, null, 85); // Qualität 85 %

imagedestroy($image);

JPEG in eine Datei speichern

<?php
// Vorhandenes Bild laden und komprimiert speichern
$source = imagecreatefromjpeg('/pfad/zum/original.jpg');

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

// Bild auf 800 x 600 Pixel skalieren
$thumb = imagecreatetruecolor(800, 600);
imagecopyresampled($thumb, $source, 0, 0, 0, 0, 800, 600,
    imagesx($source), imagesy($source));

// Mit Qualität 75 in Datei schreiben
$result = imagejpeg($thumb, '/pfad/zum/thumbnail.jpg', 75);

if ($result) {
    echo 'Thumbnail erfolgreich gespeichert.';
} else {
    echo 'Fehler beim Speichern.';
}

imagedestroy($source);
imagedestroy($thumb);
Thumbnail erfolgreich gespeichert.

// Wichtig · Fallstricke

Kein Transparenz-Support: JPEG unterstützt keine Transparenz (Alpha-Kanal). Transparente Bereiche werden in der Regel schwarz dargestellt. Für Bilder mit Transparenz sollte stattdessen imagepng() oder imagewebp() verwendet werden.

Ausgabepuffer beachten: Wenn vor imagejpeg() bereits HTML oder andere Ausgaben gesendet wurden, schlägt das Setzen von header() fehl. Nutzen Sie ob_start()/ob_end_clean() oder stellen Sie sicher, dass keinerlei Ausgaben vor dem Header-Aufruf erfolgen.

Dateiberechtigungen: Beim Schreiben in eine Datei muss der PHP-Prozess Schreibrechte auf das Zielverzeichnis haben, andernfalls gibt die Funktion false zurück.

GdImage seit PHP 8.0: Ab PHP 8.0 ist der erste Parameter vom Typ GdImage (Objekt) statt einer resource. Code, der mit älteren PHP-Versionen kompatibel sein muss, sollte dies berücksichtigen.