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