Start · Sprachen · PHP · Referenz · GmagickException

GmagickException

Klasse

Ausnahmeklasse der <code>Gmagick</code>-Erweiterung, die bei Fehlern in Bildverarbeitungsoperationen geworfen wird.

seit PHP 2.0.1RC1 Kategorie: error

Signatur

class GmagickException extends RuntimeException

Beschreibung

GmagickException ist die einzige Ausnahmeklasse der Gmagick-Erweiterung und erweitert die PHP-Kernklasse RuntimeException. Sie wird geworfen, wenn eine Operation der Gmagick-Klasse fehlschlägt – etwa beim Öffnen einer nicht vorhandenen Bilddatei, bei ungültigen Parametern oder bei internen GraphicsMagick-Fehlern.

Da sie von RuntimeException erbt, stehen alle Standardmethoden wie getMessage(), getCode() und getTrace() zur Verfügung. Der Fehlercode entspricht dabei dem internen GraphicsMagick-Fehlercode, die Fehlermeldung enthält eine lesbare Beschreibung des aufgetretenen Problems.

Für eine robuste Bildverarbeitung sollten alle Aufrufe an Gmagick-Methoden in einem try/catch-Block gekapselt werden, der explizit GmagickException abfängt. So können Laufzeitfehler kontrolliert behandelt werden, ohne dass das Skript unkontrolliert abbricht.

Beispiele

Fehlerbehandlung beim Öffnen einer Bilddatei

<?php
try {
    $gmagick = new Gmagick('/pfad/zu/nichtvorhandene-datei.jpg');
    $gmagick->thumbnailimage(200, 150);
    $gmagick->write('/pfad/zu/ausgabe.jpg');
} catch (GmagickException $e) {
    echo 'Gmagick-Fehler: ' . $e->getMessage() . PHP_EOL;
    echo 'Fehlercode: ' . $e->getCode() . PHP_EOL;
}
Gmagick-Fehler: Unable to open image '/pfad/zu/nichtvorhandene-datei.jpg' Fehlercode: 425

Unterscheidung zwischen Gmagick- und allgemeinen Ausnahmen

<?php
function verarbeitesBild(string $eingabe, string $ausgabe): void {
    try {
        $gmagick = new Gmagick($eingabe);
        $gmagick->resizeimage(800, 600, Gmagick::FILTER_LANCZOS, 1, true);
        $gmagick->setimageformat('jpeg');
        $gmagick->writeimage($ausgabe);
        echo 'Bild erfolgreich verarbeitet: ' . $ausgabe . PHP_EOL;
    } catch (GmagickException $e) {
        // Spezifischer GraphicsMagick-Fehler
        error_log('GraphicsMagick-Fehler [' . $e->getCode() . ']: ' . $e->getMessage());
        throw new RuntimeException('Bildverarbeitung fehlgeschlagen.', 0, $e);
    }
}

try {
    verarbeitesBild('/bilder/foto.png', '/bilder/foto_klein.jpg');
} catch (RuntimeException $e) {
    echo 'Fehler: ' . $e->getMessage() . PHP_EOL;
    echo 'Ursache: ' . $e->getPrevious()->getMessage() . PHP_EOL;
}
Fehler: Bildverarbeitung fehlgeschlagen. Ursache: Unable to open image '/bilder/foto.png'

// Wichtig · Fallstricke

Gmagick vs. Imagick: Die Gmagick-Erweiterung basiert auf GraphicsMagick, während Imagick auf ImageMagick aufbaut. Die Ausnahmen beider Erweiterungen (GmagickException und ImagickException) sind nicht kompatibel und müssen getrennt abgefangen werden.

Verfügbarkeit: Die Gmagick-Erweiterung ist keine Standard-PHP-Erweiterung und muss separat installiert werden (z. B. via PECL: pecl install gmagick). Prüfen Sie mit extension_loaded('gmagick'), ob sie verfügbar ist.

Fehlercodes: Die numerischen Fehlercodes entsprechen den internen GraphicsMagick-Fehlercodes und sind in der GraphicsMagick-Dokumentation beschrieben. Sie können zur differenzierten Fehlerbehandlung herangezogen werden.