In PHP, insbesondere wenn die GD -Bibliothek verwendet wird, um Bilder zu verarbeiten, müssen die Bilder häufig Farben zugewiesen. ImageColOralCode () und ImageColorallocatealpha () sind zwei häufig verwendete Funktionen, um Farben zuzuweisen, aber viele Menschen werden sich fragen, wann sie Anfänger sind: Was ist der Unterschied zwischen ihnen? Warum müssen Sie sie unterscheiden? Dieser Artikel wird es für Sie ausführlich analysieren.
ImageColOralCode () ist eine Funktion in der PHP -GD -Bibliothek, mit der ein Bild eine RGB -Farbe zugewiesen wird.
Die grundlegende Verwendung ist wie folgt:
<?php
$img = imagecreatetruecolor(200, 200);
$red = imagecolorallocate($img, 255, 0, 0); // Rot
imagefill($img, 0, 0, $red);
imagepng($img, 'https://m66.net/output.png');
imagedestroy($img);
?>
Es akzeptiert vier Parameter:
$ img : Bildressource;
$ rot : roter Zutat (0–255);
$ green : grüner Zutat (0–255);
$ Blue : Blue Inhaltsstoffe (0–255).
Die auf diese Weise zugewiesene Farbe ist eine feste Farbe ohne Transparenz , die für Szenen geeignet ist, in denen eine vollständig undurchlässige Erleichterung erforderlich ist.
ImageColorAllocatealpha () ist eine erweiterte Version, die auf ImageColoralClocate () basiert, mit der Sie Transparenz (Alpha -Kanal) angeben können.
Die Parameter sind wie folgt:
$ img : Bildressource;
$ rot : roter Zutat (0–255);
$ green : grüner Zutat (0–255);
$ Blue : Blue Inhaltsstoffe (0–255);
$ alpha : Transparenz (0–127), wobei 0 vollständig undurchsichtig und 127 vollständig transparent bedeutet.
Zum Beispiel:
<?php
$img = imagecreatetruecolor(200, 200);
imagesavealpha($img, true); // Speichern aktivieren alpha Gang
$transparentRed = imagecolorallocatealpha($img, 255, 0, 0, 63); // 半透明Rot
imagefill($img, 0, 0, $transparentRed);
imagepng($img, 'https://m66.net/output_transparent.png');
imagedestroy($img);
?>
ImagesAvealpha () ist hier wichtig, und die ohne sie generierten PNG -Transparenzinformationen gehen verloren.
Merkmale | ImageColoralLaCate () | ImageColorallocatealpha () |
---|---|---|
Ob Transparenz unterstützt wird | Nicht unterstützt, nur undurchsichtige Farben | Unterstützung definiert der vierte Parameter Transparenz |
verwenden | Zeichnen Sie gewöhnliche Farbblöcke, Zeilen, Text usw. | Zeichnen Sie Elemente, die transparente oder durchscheinende Effekte erfordern |
Transparenzwertbereich | keiner | 0 (undurchsichtig) - 127 (voll transparent) |
Mit anderen Worten, wenn Sie eine normale Farbe auf das Bild zeichnen müssen (vollständig undurchsichtig), reicht es aus, wenn Sie sich im BildColOralCode () unter Verwendung von ImagesColoralClocate () befinden. Und wenn Sie ein Diagramm mit transparenten Effekten zeichnen möchten, z. B. das Erstellen eines PNG mit transparentem Hintergrund oder einem durchscheinenden Overlay -Effekt, müssen Sie Imagiencolorallocatealpha () verwenden.
Die Hauptgründe sind:
Effizienzproblem : Die Berechnung und Speicherung von undurchsichtigen Farben ist einfacher als die mit Transparenz.
Kompatibilitätsprobleme : Einige Ausgangsformate (wie JPEG) unterstützen keine Transparenz selbst, daher ist es nicht sinnvoll, transparente Farben zu verwenden.
Code -Klarheit : Klärung, wann transparente Effekte erforderlich sind und wenn sie nicht benötigt werden, kann der Code die Wartung erleichtern.
Wenn Sie nur ImageColorallocatealpha () verwenden, erhöht dies möglicherweise nicht nur die nutzlosen Berechnungen, sondern auch Probleme mit Formatkompatibilität.
? Wenn Sie nur einfaches Bildfüllung, Zeichnen von Zeilen und Text hinzufügen: Verwenden Sie ImagebildColOralCode () .
? Wenn Sie ein Wasserzeichen mit Transparenz und durchscheinender Schicht von PNG erstellen müssen: Verwenden Sie imageColorallocatealpha () , denken Sie daran, gleichzeitig ImagesAvealpha () zu aktivieren.