Ich würde gerne wissen und herausfinden, wie ich jedes Pixel eines Bildes kolorieren/ersetzen kann, das ist nicht (vollständig) transparent mit einem opaken Pixel.ImageMagick/Imagick: Konvertiere ein PNG mit Alpha-Kanal in ein 2-farbiges Bild (Farbe, Transparent)
Zum Beispiel möchte ich ein mehrfarbiges Logo mit transparenten Pixeln in ein Logo mit nur der Farbe # ff0000 konvertieren und den transparenten Hintergrund nicht ändern.
Ich möchte dies mit der PHP Imagick Library erreichen. Ich kann keine gute Dokumentation finden.
Ich dachte, dass Imagick::thresholdImage wäre ein Helfer, aber es gibt keine Dokumentation über den Schwellenwert Parameter.
Mit diesem Codefragment werden die besten Ergebnisse erzielt. Aber immer noch nicht perfekt funktioniert. Einige Pixel - ich denke, die mit Alpha> 0 und < 1 werden nicht ersetzt.
$image = new \Imagick($source);
$image->setImageFormat('png');
$fill = new \ImagickPixel('#ff0000');
$image->thresholdImage(0);
$image->paintOpaqueImage('#ffffff', $fill, 1);
$image->writeImage($destination);
Ich bin nicht 100% sicher, was Sie wirklich tun wollen, aber ich denke, Sie Ihre Alpha wollen/Transparenz-Kanal auf 100% oder 0% ohne Zwischenwerte begrenzt sein, so müssen Sie Ihren Alpha-Kanal schwellen, so denke ich, dass Sie eine Hintergrundfarbe festlegen möchten und dann etwas wie 'thresholdImage (Imagick :: getQuantum() - 1, imagick :: CHANNEL_ALPHA)' –