Signatur
Beschreibung
ImagickPixel ist eine PHP-Klasse aus der Imagick-Erweiterung, die einen einzelnen Farbwert kapselt. Sie wird verwendet, um Farben für Imagick-Operationen zu definieren, zum Beispiel beim Zeichnen, beim Füllen von Bereichen oder beim Festlegen von Hintergrundfarben. Farben können als CSS-Farbnamen, Hex-Strings oder direkt als RGBA-Werte übergeben werden.
Die Klasse erlaubt es, Farbkomponenten (Rot, Grün, Blau, Alpha, Farbton, Sättigung, Helligkeit) einzeln zu lesen und zu setzen. Dadurch eignet sie sich für Farbmanipulationen und -analysen, wie das Prüfen der Farbe einzelner Pixel in einem Bild oder das Erzeugen bestimmter Farbtöne dynamisch zur Laufzeit.
ImagickPixel-Objekte werden häufig als Argumente an Imagick- und ImagickDraw-Methoden übergeben, zum Beispiel an ImagickDraw::setFillColor() oder Imagick::floodFillPaintImage(). Sie können aber auch direkt instanziiert und für Farbvergleiche genutzt werden.
Wichtig: Die Klasse setzt voraus, dass die PHP-Imagick-Erweiterung installiert und aktiviert ist. Diese basiert ihrerseits auf der systemeigenen ImageMagick-Bibliothek, deren Version das verfügbare Feature-Set bestimmt.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $color | string | Optionale Farbe als CSS-Farbnamen ('red', 'blue'), Hex-String ('#ff0000') oder RGB/RGBA-Ausdruck ('rgb(255,0,0)'). Wird kein Wert übergeben, wird ein leeres Pixel-Objekt erstellt. |
Beispiele
Einfache Farbe definieren und Hintergrund setzen
<?php
// Imagick-Bild mit rotem Hintergrund erstellen
$image = new Imagick();
$color = new ImagickPixel('red');
$image->newImage(200, 100, $color);
$image->setImageFormat('png');
header('Content-Type: image/png');
echo $image;
Farbkomponenten auslesen und setzen
<?php
// ImagickPixel mit Hex-Farbe erstellen
$pixel = new ImagickPixel('#3399ff');
// Farbkomponenten als normierte Werte (0.0 – 1.0) auslesen
$red = $pixel->getColorValue(Imagick::COLOR_RED);
$green = $pixel->getColorValue(Imagick::COLOR_GREEN);
$blue = $pixel->getColorValue(Imagick::COLOR_BLUE);
echo "Rot: " . round($red * 255) . "\n";
echo "Grün: " . round($green * 255) . "\n";
echo "Blau: " . round($blue * 255) . "\n";
// Farbwert ändern
$pixel->setColorValue(Imagick::COLOR_RED, 1.0);
echo "Neue Farbe: " . $pixel->getColor()['r'] . ", " . $pixel->getColor()['g'] . ", " . $pixel->getColor()['b'] . "\n";
Farbe einzelner Pixel aus einem Bild auslesen
<?php
// Bild laden und Pixelfarbe an Position (10, 20) prüfen
$image = new Imagick('bild.png');
$pixel = $image->getImagePixelColor(10, 20);
$farben = $pixel->getColor();
echo "R: {$farben['r']}, G: {$farben['g']}, B: {$farben['b']}\n";
// Alpha-Kanal ebenfalls auslesen
$alpha = $pixel->getColorValue(Imagick::COLOR_ALPHA);
echo "Alpha: " . round($alpha * 255) . "\n";
// Wichtig · Fallstricke
Normierte Farbwerte: getColorValue() und setColorValue() arbeiten mit Werten im Bereich 0.0 bis 1.0, nicht im Bereich 0–255. Die Umrechnung erfolgt durch Multiplikation bzw. Division mit 255.
Speicherverwaltung: Bei der Verarbeitung vieler Pixel (z. B. in einer Pixeliteration über Imagick::getPixelIterator()) sollte jedes ImagickPixel-Objekt nach der Verwendung mit clear() und destroy() freigegeben werden, um Speicherlecks zu vermeiden.
Farbnamenunterstützung: Welche CSS-Farbnamen akzeptiert werden, hängt von der installierten ImageMagick-Version ab. Im Zweifel sind Hex-Codes zuverlässiger.