Imagesetstyle () ist eine Funktion, die durch die GD -Erweiterung von PHP bereitgestellt wird, mit der "Stil" (d. H. Pixelsequenz) zum Zeichnen festgelegt wird, sodass vordefinierte gepunktete und gestrichelte Linien, gepunktete Linien oder andere komplexe Linientypen verwendet werden können, wenn Zeichnungsfunktionen wie die Zeichnungsfunktionen wie die Imagine () , Imagepolygon () verwendet werden (). IMG_COLOR_Styledbrushed in Verbindung mit der Pinsel) beim Zeichnen der Linie und zeichnen Sie die Linien nach Stil. Php +1
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">imagesetstyle</span></span><span> ( GdImage|resource </span><span><span class="hljs-variable">$image</span></span><span> , </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$style</span></span><span> )
</span></span>$ Bild : Ein Bildressource oder ein GDIMAGE -Objekt, das von ImageCrreatTueColor () oder Imaginecreate () usw. zurückgegeben wird, usw.
$ style : Ein Array, das aus mehreren "Pixelfarben" besteht (kann kein leeres Array sein). Array -Elemente sind normalerweise Farbkenner (Integrale), die von ImageColOralCocate () / ImageColorallocatealpha () zurückgegeben werden, und können auch die konstante IMG_COLOR_TRALPARENT enthalten, um transparente Pixel darzustellen. Die Funktion gibt wahr erfolgreich und falsch zurück, wenn sie fehlschlägt. Php
Stellen Sie sich $ style als eine Reihe von "Pixelmustern" vor, wie [Rot, Rot, Rot, Weiß, Weiß] . Wenn Sie Linien zeichnen und eine spezielle Farbe im GD mit IMG_COLOR_Styled verwenden, wird GD die Pixel entlang der Zeile nacheinander lesen. Wenn Sie Farbwerte begegnen, zeichnen Sie die entsprechenden Pixel und überspringen Sie sie, wenn Sie transparente Werte begegnen, und bilden Sie so Effekte wie Armaturenbrettlinien, Punkte und Linien. Je länger das Style -Array und desto komplexer die Kombination, desto mehr Linientypen können Sie erstellen. TECFA
IMG_COLOR_STYLED : Wird als Farbparameter in Funktionen wie Imagine () verwendet, wodurch angeben, dass Linien unter Verwendung des aktuellen Array -Stils gezeichnet werden.
IMG_COLOR_BRUSHED / IMG_COLOR_STYLEDBRUSHED : Spezielle Farbkonstanten, die in Kombination mit Pinsel (Pinsel) verwendet werden (können für komplexere Zeichenszenen verwendet werden).
IMG_COLOR_TRALPARENT : Ein transparentes Pixel wird in einem Stilarray dargestellt.
Diese Konstanten werden in der konstanten Tabelle PHP -Bild/GD beschrieben. Php
Das folgende Beispiel zeigt, wie man eine Leinwand erstellt, einen Stil definiert, eine diagonale gepunktete Linie mit Imagine () zeichnet und dann das Bild als PNG -Datei ausgibt (oder direkt vom Browser angezeigt wird):
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Kopf(Wenn Sie das Bild direkt im Browser ausgeben)</span></span><span>
</span><span><span class="hljs-comment">// header('Content-Type: image/png');</span></span><span>
</span><span><span class="hljs-comment">// Erstellen Sie eine Leinwand</span></span><span>
</span><span><span class="hljs-variable">$w</span></span><span> = </span><span><span class="hljs-number">300</span></span><span>;
</span><span><span class="hljs-variable">$h</span></span><span> = </span><span><span class="hljs-number">200</span></span><span>;
</span><span><span class="hljs-variable">$im</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatetruecolor</span></span><span>(</span><span><span class="hljs-variable">$w</span></span><span>, </span><span><span class="hljs-variable">$h</span></span><span>);
</span><span><span class="hljs-comment">// Farbverteilung</span></span><span>
</span><span><span class="hljs-variable">$white</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>);
</span><span><span class="hljs-variable">$black</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-variable">$red</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-comment">// Füllen Sie den Hintergrund</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagefilledrectangle</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$w</span></span><span>-</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-variable">$h</span></span><span>-</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-variable">$white</span></span><span>);
</span><span><span class="hljs-comment">// Stile definieren:5 Rote Pixel,5 Weiße Pixel —— Bilden eine klare gepunktete Linie</span></span><span>
</span><span><span class="hljs-variable">$style</span></span><span> = [
</span><span><span class="hljs-variable">$red</span></span><span>, </span><span><span class="hljs-variable">$red</span></span><span>, </span><span><span class="hljs-variable">$red</span></span><span>, </span><span><span class="hljs-variable">$red</span></span><span>, </span><span><span class="hljs-variable">$red</span></span><span>,
</span><span><span class="hljs-variable">$white</span></span><span>, </span><span><span class="hljs-variable">$white</span></span><span>, </span><span><span class="hljs-variable">$white</span></span><span>, </span><span><span class="hljs-variable">$white</span></span><span>, </span><span><span class="hljs-variable">$white</span></span><span>
];
</span><span><span class="hljs-comment">// Set Style</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagesetstyle</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-variable">$style</span></span><span>);
</span><span><span class="hljs-comment">// Zeichnen Sie Linien mit Stil:Spezielle Farben eingeben IMG_COLOR_STYLED</span></span><span>
</span><span><span class="hljs-comment">// Beachten:imageline() Der letzte Parameter akzeptiert einen Farbindex oder eine spezielle Konstante</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imageline</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-variable">$w</span></span><span> - </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-variable">$h</span></span><span> - </span><span><span class="hljs-number">10</span></span><span>, IMG_COLOR_STYLED);
</span><span><span class="hljs-comment">// Speichern in Datei speichern(Beispiel),Oder verwenden imagepng($im); Ausgabe zum Browser</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagepng</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-keyword">__DIR__</span></span><span> . </span><span><span class="hljs-string">'/dashed_example.png'</span></span><span>);
</span><span><span class="hljs-comment">// Ressourcen frei machen</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>);
</span></span>Der obige Code generiert eine diagonale Linie , die nach Stil schießt, eine diagonale Linie, die auf der diagonalen Linie angezeigt wird. Schlüsselpunkte: ImagesetStyle () legt das Style -Array fest und verwenden Sie dann IMG_COLOR_STYLED , wenn Sie Linien zeichnen, um sie stilvoll zu zeichnen. TECFA PHP
Wenn Sie delikatere gestrichelte Zeilen wünschen, können Sie einige Einträge im Stil auf IMG_COLOR_TRALPARENT festlegen, um anzuzeigen, dass das Pixel nicht gezogen wird, wodurch eine Lücke bildet:
<span><span><span class="hljs-variable">$style</span></span><span> = [</span><span><span class="hljs-variable">$black</span></span><span>, </span><span><span class="hljs-variable">$black</span></span><span>, IMG_COLOR_TRANSPARENT, IMG_COLOR_TRANSPARENT];
</span><span><span class="hljs-title function_ invoke__">imagesetstyle</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-variable">$style</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imageline</span></span><span>(</span><span><span class="hljs-variable">$im</span></span><span>, </span><span><span class="hljs-number">20</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>, </span><span><span class="hljs-number">280</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>, IMG_COLOR_STYLED);
</span></span>Dadurch zeichnet 2 schwarze Punkte alle zwei Pixel, überspringen dann 2 Pixel und wiederholen sich. Php
GD unterstützt auch "Pinsel" (über Bildersetbrush () ), um komplexe Linien zu zeichnen. Wenn Sie sowohl Stile als auch Pinsel für Linien einstellen und beim Zeichnen img_color_styledbrushed verwenden, kombiniert GD den Stilindex mit den Pinselpixeln zum Rendern. Diese Verwendung ist für Szenen geeignet, in denen verschiedene Pinseleffekte durch Stil umgeschaltet werden müssen (z. B. gepunktete Linien, jedoch mit unterschiedlichen Mustern für jedes Segment). Für bestimmte Details finden Sie im Kapitel über Pinsel im GD -Handbuch. Php +1
Das Stil -Array kann nicht leer sein : Wenn Sie in ein leeres Array das Übergebenen zu verursachen, wird ein Fehler verursacht. Php
Stilelementtyp : Das Array -Element sollte ein zugewiesener Farbindex ( ImageColOralCocate () Rückgabewert) oder eine IMG_COLOR_TRALPARENT -Konstante sein. Das direkte Schreiben von RGB -Arrays wird nicht wirksam. TECFA
Stillänge und -wirkung : Je länger das Stilarray, desto flexibler ist es, aber es verbraucht auch mehr Speicher und Berechnung (normalerweise kürzer die Stillänge).
Leitungsrichtung/Schrägstrichproblem : Es gab frühe PHP/GD -Fehler in der Geschichte, die einige Slash -Stile beeinflussten, aber diese Funktion war in modernen PHP -Versionen stabil. Wenn Sie auf seltsame Probleme stoßen, überprüfen Sie zuerst die PHP- und GD -Erweiterungen und debuggen kleine Beispiele manuell. PHP MWKWorks.com
Kompatibilität mit dem Bildfarbmodus : In der Regel ist es in Ordnung, Stile für echte Farbbilder zu verwenden. Achten Sie auf die Anzahl der Farbenbeschränkungen für Index -Farbbilder. Die Verwendung von ImagecrreatTueColor () kann viele Probleme mit Farbkompatibilität vermeiden. Php
Verwenden Sie Stil + transparente Pixel, um gepunktete Grenzen oder Fortschrittsbalkenskalen zu erstellen.
Generieren Sie die Stil -Arrays dynamisch zur Laufzeit (beispielsweise berechnen Sie Arrays basierend auf der erforderlichen Armaturenbrettlänge und Spaltlänge), um eine einfache Multiplexierung und Parametrisierung zu erhalten.
Wenn Sie komplexere Texturen (gemusterte Segmente anstelle einzelner Pixel) benötigen, sollten Sie Bildersetbrush () oder wiederholt mit kleinen Mustern zeichnen. Php
Imagesetstyle () wird verwendet, um das Pixelstil -Array von Linien festzulegen und kann in Funktionen wie ImageLine () verwendet werden, um gepunktete Linien, gepunktete Linien usw. zu erreichen. Php +1
Das Stil -Array -Element sollte ein Farbindex oder ein IMG_COLOR_TRALPARENT sein und das Array kann nicht leer sein. Php
Wenn komplexere Linieneffekte erforderlich sind, kann sie in Verbindung mit Pinselkonstanten (z. B. img_color_styledbrushed ) oder imagsetbrush () verwendet werden. Php