Signatur
Beschreibung
ImagickDrawException ist eine spezialisierte Ausnahme-Klasse, die von der imagick-Erweiterung geworfen wird, wenn bei Operationen auf einem ImagickDraw-Objekt ein Fehler auftritt. Sie erweitert ImagickException und ermöglicht damit eine granulare Fehlerbehandlung speziell für Zeichenoperationen.
Typische Situationen, in denen diese Ausnahme ausgelöst wird, sind ungültige Parameter bei Zeichenbefehlen, fehlerhafte Pfadangaben in Vektorgrafik-Operationen oder der Versuch, eine Zeichenoperation auf einem nicht korrekt initialisierten ImagickDraw-Objekt auszuführen.
Da ImagickDrawException von ImagickException und diese wiederum von der Standard-PHP-Klasse Exception erbt, können Instanzen dieser Klasse entweder gezielt mit catch (ImagickDrawException $e) oder allgemeiner mit catch (ImagickException $e) bzw. catch (Exception $e) abgefangen werden.
Beispiele
Gezieltes Abfangen einer ImagickDrawException
<?php
try {
$draw = new ImagickDraw();
// Ungültige Schriftgröße setzen, die einen Fehler provoziert
$draw->setFontSize(-1);
$imagick = new Imagick();
$imagick->newImage(200, 100, new ImagickPixel('white'));
$imagick->annotateImage($draw, 10, 50, 0, 'Test');
} catch (ImagickDrawException $e) {
echo 'ImagickDraw-Fehler: ' . $e->getMessage() . PHP_EOL;
echo 'Fehlercode: ' . $e->getCode() . PHP_EOL;
} catch (ImagickException $e) {
echo 'Allgemeiner Imagick-Fehler: ' . $e->getMessage() . PHP_EOL;
} catch (Exception $e) {
echo 'Unerwarteter Fehler: ' . $e->getMessage() . PHP_EOL;
}
Fehlerbehandlung beim Zeichnen von Formen
<?php
try {
$draw = new ImagickDraw();
$draw->setFillColor(new ImagickPixel('red'));
$draw->setStrokeColor(new ImagickPixel('black'));
$draw->setStrokeWidth(2);
$draw->rectangle(10, 10, 190, 90);
$imagick = new Imagick();
$imagick->newImage(200, 100, new ImagickPixel('white'));
$imagick->setImageFormat('png');
$imagick->drawImage($draw);
header('Content-Type: image/png');
echo $imagick->getImageBlob();
} catch (ImagickDrawException $e) {
// Spezifischer Fehler beim Zeichnen
error_log('ImagickDraw schlug fehl: ' . $e->getMessage());
http_response_code(500);
echo 'Fehler beim Erzeugen der Grafik.';
} catch (ImagickException $e) {
error_log('Imagick-Fehler: ' . $e->getMessage());
http_response_code(500);
echo 'Fehler beim Erzeugen der Grafik.';
}
// Wichtig · Fallstricke
Die imagick-Erweiterung muss korrekt installiert und konfiguriert sein, damit ImagickDrawException verfügbar ist. Ohne die Erweiterung existiert die Klasse nicht und der Code schlägt mit einem fatalen Fehler fehl.
Da nicht alle fehlerhaften Parameter bei ImagickDraw-Methoden zwingend eine Ausnahme auslösen (manche werden still ignoriert oder normalisiert), sollte der Rückgabewert von Methoden geprüft werden, sofern dokumentiert.