8 Stimmen

imagecolorat" und Transparenz

Wie es möglich ist, die Transparenz Wert eines Pixels auf einer image ?

imagecolorat" wählt nur den Index der Farbe des Pixels an der angegebenen Stelle im Bild aus. Mit diesem Index kann ich die RGB-Werte erhalten, aber nicht die transparenten Werte.

Ich hoffe, Sie haben dafür Verständnis, und danke Ihnen im Voraus.

14voto

shadyyx Punkte 15526

Könnte die Lösung wie folgt aussehen:

$colorIndex = imagecolorat($img, $x, $y);
$colorInfo = imagecolorsforindex($img, $colorIndex);
print_r($colorInfo);

die etwas ausgibt wie:

Array
(
   [red] => 226
   [green] => 222
   [blue] => 252
   [alpha] => 0
)

wobei [alpha] Ihr Transparenzwert ist... (von 0 bis 127, wobei 0 völlig undurchsichtig und 127 völlig transparent ist)

Viel Spaß!

10voto

Stefan Gehrig Punkte 80686

Soweit ich weiß, wird der Transparenzwert von der Funktion imagecolorat . Könnten Sie es versuchen?

$color        = imagecolorat($image, $x, $y);
$transparency = ($color >> 24) & 0x7F;

Die Transparenz ist eine ganze Zahl zwischen 0 und 127, so dass wir die ersten 8 Bits des 32-Bit-Farbinteger maskieren müssen.

1voto

GordonM Punkte 30109

Laut PHP-Handbuch gibt imagecolorat den Index der Farbe an den angegebenen X/Y-Koordinaten zurück (ich nehme an, das gilt für GIF und/oder PNG-8).

Wenn Sie den Index kennen, besteht das Problem darin, festzustellen, welcher Index in der Datei der transparente ist.

imagecolortransparent könnte einen Blick wert sein, imagecolorsforindex könnte ebenfalls hilfreich sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X