Signatur
Beschreibung
imagecreatefromxpm() liest eine XPM-Datei (X PixMap) vom Dateisystem ein und erstellt daraus ein GD-Bildobjekt. Das zurückgegebene GdImage-Objekt kann anschließend mit allen Standard-GD-Funktionen wie imagecopyresampled(), imagepng() oder imagefilter() weiterverarbeitet werden.
XPM ist ein textbasiertes Bildformat, das vor allem in der X Window System-Welt (Linux/Unix-Desktop) verbreitet ist. Es wird häufig für kleine Icons und Grafiken in GUI-Anwendungen wie GTK- oder Qt-Programmen verwendet. In modernen Webanwendungen ist das Format selten anzutreffen, kann aber bei der Verarbeitung von Legacy-Assets oder Desktop-Ressourcen relevant sein.
Die Funktion steht nur zur Verfügung, wenn die GD-Bibliothek mit XPM-Unterstützung kompiliert wurde (d. h. mit der libXpm-Bibliothek). Ist dies nicht der Fall, ist die Funktion nicht definiert. Vor dem Aufruf sollte daher geprüft werden, ob function_exists('imagecreatefromxpm') wahr ist.
Nach der Bildbearbeitung sollte das erzeugte Bildobjekt mit imagedestroy() (PHP < 8.0) freigegeben werden, um Speicher zu sparen. Ab PHP 8.0 wird der Speicher automatisch durch den Garbage Collector verwaltet, wenn das Objekt nicht mehr referenziert wird.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $filename Pflicht | string | Pfad zur XPM-Datei, die geladen werden soll. Es können relative und absolute Pfade angegeben werden. Der Pfad muss für den PHP-Prozess lesbar sein. |
Rückgabewert
GdImage-Objekt zurück. Im Fehlerfall (z. B. Datei nicht gefunden, ungültiges Format oder fehlende XPM-Unterstützung in der GD-Bibliothek) wird false zurückgegeben.Beispiele
XPM-Datei laden und als PNG ausgeben
<?php
// Prüfen, ob XPM-Unterstützung verfügbar ist
if (!function_exists('imagecreatefromxpm')) {
die('XPM-Unterstützung ist in dieser GD-Installation nicht verfügbar.');
}
$xpmDatei = '/pfad/zu/bild.xpm';
$bild = imagecreatefromxpm($xpmDatei);
if ($bild === false) {
die('Die XPM-Datei konnte nicht geladen werden.');
}
// Bildgröße ermitteln
$breite = imagesx($bild);
$hoehe = imagesy($bild);
echo "Bildgröße: {$breite} x {$hoehe} Pixel\n";
// Als PNG in Datei speichern
imagepng($bild, '/pfad/zu/ausgabe.png');
// Speicher freigeben (für PHP < 8.0 empfohlen)
imagedestroy($bild);
echo 'Bild erfolgreich als PNG gespeichert.';
XPM-Icon skalieren und als JPEG ausgeben
<?php
if (!function_exists('imagecreatefromxpm')) {
die('XPM wird von dieser GD-Installation nicht unterstützt.');
}
$quelle = imagecreatefromxpm('/pfad/zu/icon.xpm');
if ($quelle === false) {
die('Fehler beim Laden der XPM-Datei.');
}
$origBreite = imagesx($quelle);
$origHoehe = imagesy($quelle);
// Zielgröße: 128 x 128 Pixel
$neueBreite = 128;
$neueHoehe = 128;
$ziel = imagecreatetruecolor($neueBreite, $neueHoehe);
imagecopyresampled(
$ziel, $quelle,
0, 0, 0, 0,
$neueBreite, $neueHoehe,
$origBreite, $origHoehe
);
// Als JPEG mit Qualität 90 speichern
imagejpeg($ziel, '/pfad/zu/icon_gross.jpg', 90);
imagedestroy($quelle);
imagedestroy($ziel);
echo 'Icon erfolgreich skaliert und gespeichert.';
// Wichtig · Fallstricke
Verfügbarkeit: imagecreatefromxpm() ist nur verfügbar, wenn PHP mit einer GD-Bibliothek kompiliert wurde, die XPM-Unterstützung enthält (Build gegen libXpm). Unter Windows ist diese Funktion standardmäßig nicht verfügbar. Verwende stets function_exists('imagecreatefromxpm'), bevor du die Funktion aufrufst.
Pfad-Sicherheit: Wenn der Dateiname aus Benutzereingaben stammt, muss der Pfad sorgfältig validiert werden (z. B. mit realpath() und einer Whitelist-Überprüfung), um Path-Traversal-Angriffe zu vermeiden.
Fehlerbehandlung: Die Funktion gibt im Fehlerfall false zurück und kann zusätzlich eine PHP-Warnung auslösen. Zur stillen Fehlerbehandlung kann der Aufruf mit @imagecreatefromxpm() unterdrückt werden, besser ist jedoch die Nutzung von set_error_handler() oder die Prüfung über is_readable() vor dem Aufruf.