Imagick (ImageMagick) in PHP unter Windows nutzen (aktivieren)

Ähnlich wie andere Module lässt sich auch Imagick einfach in PHP integrieren. Dafür benötigt es lediglich eine entsprechende *.dll-Datei.
Allerdings benötigt Imagick zwingend das Programm ImageMagick, auf dem es basiert und deren Funktionen es nutzt. Daher möchte ich einmal kurz die Vorgehensweise erklären, wie man beides erfolgreich zum Laufen bekommt.

Zuerst einmal muss man ImageMagick unter folgender Adresse herunterladen:
imagemagick.org/script/binary-releases.php#windows
Auch wenn Windows in einer 64-Bit Variante vorhanden ist, bitte die 32-Bit Variante herunterladen, genauer gesagt, folgende: „Win32 dynamic at 16 bits-per-pixel“.

Bei der Installation sollte dann auf jeden Fall den Haken bei „Add application directory to your system path“. Das wird benötigt, damit PHP den Pfad später auch findet und die sich dort befindlichen Dateien nutzen kann.
Die übrigen Haken sich optional, für die reine Nutzung in PHP allerdings zu vernachlässigen, da sie hier nicht benötigt werden.

Danach braucht man noch die entsprechende Erweiterung für PHP.
Aktuelle Versionen für PHP 5.3 gibt es hier: valokuva.org/builds/
Aktuelle Versionen für PHP 5.4 gibt es hier: peewit.fr/imagick/

Diese sind jeweils unterteilt in „ts“ = „thread safe“ und „nts“ = „none thread safe“. Was davon bei eurer Installation ist, müsst ihr selbst in der PHPInfo schauen. Der Eintrag findet sich weit oben unter „Thread Safety“. enabled = „ts“, disabled = „nts“. Demnach dann die jeweilige Datei herunterladen und in das Erweiterungsverzeichnis von PHP einfügen (standardmäßig: PHP_DIR\ext\).
Durch folgende Zeile in der php.ini muss man die Erweiterung dann nur noch laden:

extension=php_imagick.dll

Nach einem Neustart des Webservers sollte nun der Pfad der ImageMagick Installation in der PHPInfo auftauchen:

Außerdem sollte imagick als Erweiterung geladen sein:

Als letztes kann imagick noch getestet werden. Dazu einfach eine PHP-Datei mit folgendem Inhalt anlegen und aufrufen:

<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

$im = new Imagick();
$im->newImage(100, 100, "green", "png");

$draw = new ImagickDraw();
$draw->setFillColor("white");
$draw->setStrokeWidth(1);
$draw->setStrokeColor("black");
$draw->circle(50, 50, 50, 90);
$im->drawImage($draw);

$itWorks = "It works!";
$draw = new ImagickDraw();
$draw->setStrokeColor("black");
$draw->setTextAlignment(Imagick::ALIGN_CENTER);
$metrics = $im->queryFontMetrics($draw, $itWorks);
$adjustY = ($metrics["textHeight"] + $metrics["descender"]) / 2; // ~ vertical align: middle
$draw->annotation(50, 50 + $adjustY, "It works!");
$im->drawImage($draw);

header("Content-Type: image/" . $im->getImageFormat());
echo $im->getImageBlob();

Idealerweise sollte dann folgendes Bild erstellt worden sein:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.