Signatur
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
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);
// 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.