Start · Sprachen · PHP · Referenz · imagecreatefromxpm

imagecreatefromxpm

Funktion

Lädt eine XPM-Bilddatei und gibt eine <code>GdImage</code>-Ressource zurück, die für weitere GD-Bildbearbeitungen genutzt werden kann.

seit PHP 4.0.1 Kategorie: image

Signatur

imagecreatefromxpm(string $filename): GdImage|false

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

Typ
GdImage|false
Beschreibung
Gibt bei Erfolg ein 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.';
Bildgröße: 32 x 32 Pixel 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.';
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.