Start · Sprachen · PHP · Referenz · ImagickPixel

ImagickPixel

Klasse

Repräsentiert einen einzelnen Pixel- bzw. Farbwert und ermöglicht die Arbeit mit Farben in der Imagick-Erweiterung.

seit PHP 2.0.0 Kategorie: image

Signatur

class ImagickPixel

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";
Rot: 51 Grün: 153 Blau: 255 Neue Farbe: 255, 153, 255

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.