Start · Sprachen · PHP · Referenz · imagepalettetotruecolor

imagepalettetotruecolor

Funktion

Konvertiert ein palettenbasiertes GD-Bild in ein Echtfarbenbild (True-Color).

seit PHP 5.5.0 Kategorie: image

Signatur

imagepalettetotruecolor(GdImage $image): bool

Beschreibung

imagepalettetotruecolor() wandelt ein Bild, das auf einer Farbpalette basiert (wie z. B. GIF oder PNG mit 8-Bit-Palette), in ein vollwertiges True-Color-Bild (24-Bit) um. True-Color-Bilder speichern für jeden Pixel einen eigenen Farbwert und sind daher Voraussetzung für viele erweiterte GD-Operationen wie Alphablending oder das Anwenden bestimmter Bildfilter.

Viele GD-Funktionen wie imagecopyresampled() oder imagefilter() arbeiten nur korrekt oder verlustfrei mit True-Color-Bildern. Wenn ein geladenes Bild palettenbasiert ist, sollte es mit dieser Funktion konvertiert werden, bevor solche Operationen durchgeführt werden.

Ist das übergebene Bild bereits ein True-Color-Bild, kehrt die Funktion sofort mit true zurück, ohne Änderungen vorzunehmen. Die Konvertierung findet direkt am übergebenen Bild-Objekt statt; es wird keine Kopie erstellt.

Zur Überprüfung, ob ein Bild palettenbasiert ist, kann imageistruecolor() verwendet werden. So lässt sich eine bedingte Konvertierung einfach umsetzen.

Parameter

Name Typ Default Beschreibung
$image Pflicht GdImage Das GD-Bildobjekt, das konvertiert werden soll. Kann durch Funktionen wie imagecreatefrompng(), imagecreatefromgif() oder imagecreate() erzeugt worden sein.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn das Bild erfolgreich konvertiert wurde oder bereits ein True-Color-Bild war. Gibt false zurück, wenn die Konvertierung fehlgeschlagen ist.

Beispiele

Palettenbild in True-Color konvertieren und skalieren

<?php
// GIF laden (typischerweise palettenbasiert)
$image = imagecreatefromgif('beispiel.gif');

if (!imageistruecolor($image)) {
    if (imagepalettetotruecolor($image)) {
        echo "Erfolgreich in True-Color konvertiert.\n";
    } else {
        echo "Konvertierung fehlgeschlagen.\n";
        exit;
    }
}

// Jetzt kann das Bild verlustfrei skaliert werden
$breite  = imagesx($image);
$hoehe   = imagesy($image);
$ziel    = imagecreatetruecolor($breite * 2, $hoehe * 2);

imagecopyresampled($ziel, $image, 0, 0, 0, 0, $breite * 2, $hoehe * 2, $breite, $hoehe);

imagepng($ziel, 'skaliert.png');
imagedestroy($image);
imagedestroy($ziel);
echo "Bild gespeichert.\n";
Erfolgreich in True-Color konvertiert. Bild gespeichert.

Bildfilter auf ein PNG mit Palette anwenden

<?php
// PNG mit 8-Bit-Palette laden
$image = imagecreatefrompng('palette.png');

// Sicherstellen, dass das Bild True-Color ist
if (!imageistruecolor($image)) {
    imagepalettetotruecolor($image);
}

// Graustufen-Filter anwenden (erfordert True-Color)
imagefilter($image, IMG_FILTER_GRAYSCALE);

// Ergebnis speichern
imagepng($image, 'graustufen.png');
imagedestroy($image);

echo "Graustufen-Bild wurde gespeichert.";
Graustufen-Bild wurde gespeichert.

// Wichtig · Fallstricke

Speicherverbrauch: True-Color-Bilder benötigen deutlich mehr Arbeitsspeicher als Palettenbilder, da jeder Pixel 4 Byte (RGBA) statt 1 Byte belegt. Bei großen Bildern sollte auf ausreichend Speicher geachtet werden (memory_limit in der php.ini).

Transparenz: Bei der Konvertierung von GIF-Bildern mit Transparenz wird die Transparenzfarbe in einen vollständig transparenten Alphakanal umgewandelt. Damit das erhalten bleibt, sollte nach der Konvertierung imagesavealpha($image, true) gesetzt werden.

Die Funktion verändert das ursprüngliche Bild in-place. Eine vorherige Sicherungskopie mit imagecopy() erstellen, wenn das Original erhalten bleiben soll.