Heim >Backend-Entwicklung >PHP-Tutorial >Dynamische Bildverarbeitung – PHP (34)
1 Verwendung der GD-Bibliothek in PHP
PHP ist nicht nur auf die Generierung von HTML-Ausgaben beschränkt, sondern kann auch Bilddateien in verschiedenen Formaten erstellen und bearbeiten. PHP bietet einige integrierte Bildinformationsfunktionen. Sie können die GD-Funktionsbibliothek auch verwenden, um neue Bilder zu erstellen oder vorhandene Bilder zu verarbeiten. Derzeit unterstützt die GD2-Bibliothek die Formate JPEG, PNG und WBMP. Das GIF-Format wird jedoch nicht mehr unterstützt.
• JPEG ist der Name eines Komprimierungsstandards, der üblicherweise zum Speichern von Fotos oder Bildern mit satten Farben und Farbabstufungen verwendet wird. Dieses Format verwendet verlustbehaftete Komprimierung.
• PNG ist ein tragbares Webbild, das einen verlustfreien Komprimierungsstandard für Bilder verwendet.
• WBMP ist ein Dateiformat, das speziell für drahtlose Kommunikationsgeräte entwickelt wurde. Aber es wurde nicht weit verbreitet verwendet.
2 Schritte zur Bildgenerierung
Das Erstellen eines Bildes in PHP sollte die 4 unten gezeigten Schritte abschließen:
1. Erstellen Sie ein Hintergrundbild (auch Leinwand genannt). Alle nachfolgenden Vorgänge basieren auf diesem Hintergrundbild.
2. Zeichnen Sie einen Bildumriss oder geben Sie Text auf den Hintergrund ein.
3. Ausgabe der endgültigen Grafik
4. Ressourcen freigeben
<span><?<span>php </span><span>//</span><span> 创建背景图像</span>$height = <span>200</span><span>; $width </span>= <span>200</span><span>; $im </span>= ImageCreateTrueColor($width, $height); <span>//</span><span>建立空白背景</span>$white = ImageColorAllocate ($im, <span>255</span>, <span>255</span>, <span>255</span>);<span>//</span><span>设置绘图颜色</span>$blue = ImageColorAllocate ($im, <span>0</span>, <span>0</span>, <span>64</span><span>); imageFill($im, </span><span>0</span>, <span>0</span>, $blue);<span>//</span><span>绘制背景</span>imageLine($im, <span>0</span>, <span>0</span>, $width, $height, $white); <span>//</span><span>画线</span>imageString($im, <span>4</span>, <span>50</span>, <span>150</span>, <span>'</span><span>Sales</span><span>'</span>, $white); <span>//</span><span>添加字串</span>header(<span>'</span><span>Content-type: image/png</span><span>'</span><span>); imagePng($im); </span><span>//</span><span>以PNG 格式将图像输出</span><span>imageDestroy($im); </span>?></span>
3 Canvas-Verwaltung
imagecreate – Erstellen Sie ein neues palettenbasiertes Bild
??resource imagecreate(intx_size, inty_size)
??Diese Funktion wird verwendet, um eine leere neue Leinwand zu erstellen. Der Parameter ist die Bildgröße und die Einheit ist Pixel. Unterstützt 256 Farben.
??imagecreatetruecolor--Erstellen Sie ein neues Echtfarbenbild
??resource imagecreatetruecolor(intx_size, inty_size)
??Erstellen eine neue Truecolor-Bildleinwand, erfordert GD 2.0.1 oder höher, kann nicht mit dem GIF-Dateiformat verwendet werden.
??imagedestroy – Ein Bild zerstören
??boolimagedestroy( Ressourcenbild )
??imagedestroy() Release und Image zugehöriges Gedächtnis.
Andere Funktionen
Ressource imagecreatefrompng( string filename )
Erstellen Sie ein neues Bild aus einer PNG-Datei oder URL
??resource imagecreatefromjpeg( string filename )
??Neues Bild aus einer JPEG-Datei oder URL erstellen
?? resources imagecreatefromgif( string filename
??Erstellen Sie ein Bild aus einer GIF-Datei oder URL
??resource imagecreatefromwbmp( string filename )
Aus einer WBMP-Datei oder URL ein neues Bild erstellen
??intimagesx( Ressourcenbild ) --- Bildbreite ermitteln
??ntimagesy( Ressourcenbild ) --- Ermitteln Sie die Bildhöhe
4 Farbe festlegen
imagecolorallocate – Weisen Sie einem Bild eine Farbe zu
?? Syntax: intimagecolorallocate( resources image, intred, intgreen, intblue)
??imagecolorallocate() gibt einen Bezeichner zurück, der die Farbe aus den angegebenen RGB-Komponenten darstellt. Der Bildparameter ist
??Der Rückgabewert der Funktion imagecreatetruecolor() sind die roten, grünen und blauen Komponenten der erforderlichen Farbe. Diese Parameter sind ganze Zahlen von 0 bis 255 oder hexadezimal 0x00 bis 0xFF . ) muss aufgerufen werden, um jede Farbe zu erstellen, die in dem durch image dargestellten Bild verwendet wird.
5 generiert das Bild
imagegif-- Gibt das Bild aus in einen Browser oder eine Datei im GIF-Format
?? Syntax: boolimagegif(resource image [, string filename] )
??imagejpeg – als Ausgabebild im JPEG-Format in Browser oder Datei
?? Syntax: boolimagejpeg(resource image [, string filename [, intquality]] )
??imagepng-- Das Bild in a ausgeben Browser oder Datei im PNG-Format
?? Syntax: boolimagepng(resource image [, string filename] )
??imagewbmp – im WBMP-Format Ausgabebild an den Browser oder Datei
?? Syntax: boolimagewbmp(resource image [, string filename [, intforeground]] )
6 Draw Image
imagefill – Bereichsfüllung
?? Syntax: boolimagefill(resourceimage,intx,inty, intcolor)
??imagefill() führt Bereich aus Füllen Sie die Koordinaten x, y des Bildes mit Farbe (die obere linke Ecke des Bildes ist 0, 0) (dh Punkte mit derselben Farbe wie der x-, y-Punkt und benachbarte Punkte werden gefüllt).
??imagesetpixel – ein einzelnes Pixel zeichnen
?? Syntax: boolimagesetpixel( resources image, intx, inty, intcolor )
??imagesetpixel() Verwenden Sie Farbe, um einen Punkt im Bild an den x- und y-Koordinaten zu zeichnen (die obere linke Ecke des Bildes ist 0, 0).
??imageline – Ein Liniensegment zeichnen
?? Syntax: boolimageline( resources image, intx1, inty1, intx2, inty2, intcolor )
??imageline() verwendet Farbe, um im Bild ein Liniensegment von den Koordinaten x1, y1 bis x2, y2 zu zeichnen (die obere linke Ecke des Bildes ist 0, 0).
imagerectangle – ein Rechteck zeichnen
??Syntax: boolimagerectangle(resource image, intx1, inty1, intx2, inty2, intcol)
??imagerectangle() Zeichne ein Rechteck im Bildbild mit Col-Farbe, Die Koordinaten seiner oberen linken Ecke sind x1, y1 und die Koordinaten seiner unteren rechten Ecke sind x2, y2. Die Koordinaten der oberen linken Ecke des Bildes sind 0, 0.
??imagefilledrectangle – Zeichne ein Rechteck und fülle es
?? Syntax: boolimagefilledrectangle( resources image, intx1, inty1, intx2, inty2, intcolor )
??imagefilledrectangle() zeichnet ein mit Farbe gefülltes Rechteck. Die Koordinaten der oberen linken Ecke sind x1, y1 und die Koordinaten der unteren rechten Ecke sind x2, y2 ist die obere linke Ecke des Bildes.
imagepolygon – Zeichne ein Polygon
?? , intcolor)
??imagepolygon() Erstellt ein Polygon in einem Bild. Punkte ist ein PHP-Array, das die Koordinaten jedes Scheitelpunkts des Polygons enthält, d. h. Punkte[0] = x0, Punkte[1] = y0, Punkte[2] = x1, Punkte[3] = y1 usw . num_points ist die Gesamtzahl der Scheitelpunkte.
??imagefilledpolygon – Zeichne ein Polygon und fülle es
?? Syntax: boolimagefilledpolygon( Ressourcenbild, Array-Punkte, intnum_points, intcolor)
??imagefilledpolygon() Zeichnet ein gefülltes Polygon im Bild. Der Punkteparameter ist ein Array, das die x- und y-Koordinaten jedes Scheitelpunkts des Polygons der Reihe nach enthält. Der Parameter „num_points“ ist die Gesamtzahl der Scheitelpunkte und muss größer als 3 sein.
imageellipse – Eine Ellipse zeichnen
?? Syntax: boolimageellipse( resources image, intcx, intcy, intw, inth, intcolor )
??imageellipse() Zeichnen Sie eine Ellipse mit den Mittelpunkten cx, cy (die obere linke Ecke des Bildes ist 0, 0) in dem durch image dargestellten Bild. w und h geben die Breite bzw. Höhe der Ellipse an, und die Farbe der Ellipse wird durch Farbe angegeben.
??imagefilledellipse – eine Ellipse zeichnen und ausfüllen
??Syntax: boolimagefilledellipse( resources image, intcx, intcy, intw, inth, intcolor )
??imagefilledellipse() Zeichnen Sie eine Ellipse mit der Mitte auf cx, cy (die obere linke Ecke des Bildes ist 0, 0) in dem durch image dargestellten Bild. w und h geben die Breite bzw. Höhe der Ellipse an. Die Ellipse ist mit Farbe gefüllt. Gibt TRUE zurück, wenn erfolgreich, FALSE, wenn fehlgeschlagen.
imagearc – elliptischen Bogen zeichnen
??boolimagearc( resources image, intcx, intcy, intw, inth, ints, inte, intcolor )
??imagearc() Zeichnen Sie einen elliptischen Bogen in das durch image dargestellte Bild mit cx, cy (die obere linke Ecke des Bildes ist 0, 0) als Mittelpunkt. w und h geben die Breite bzw. Höhe der Ellipse an, und die Start- und Endpunkte werden in Winkeln mit den Parametern s und e angegeben. 0° liegt bei drei Uhr und wird im Uhrzeigersinn gezeichnet.
??imagefilledarc – Einen elliptischen Bogen zeichnen und ausfüllen
??boolimagefilledarc( resources image, intcx, intcy, intw, inth, ints, inte, intcolor , intstyle )
??imagefilledarc() Zeichnen Sie einen elliptischen Bogen mit cx, cy (die obere linke Ecke des Bildes ist 0, 0) in dem durch image dargestellten Bild. Gibt TRUE zurück, wenn erfolgreich, FALSE, wenn fehlgeschlagen. w und h geben die Breite bzw. Höhe der Ellipse an, und die Parameter s und e geben die Start- und Endpunkte in Winkeln an. Der Stil kann das bitweise ODER (OR) der folgenden Werte sein: IMG_ARC_PIE, IMG_ARC_CHORD, IMG_ARC_NOFILL, IMG_ARC_EDGED. Unter diesen schließen sich IMG_ARC_PIE und IMG_ARC_CHORD gegenseitig aus; IMG_ARC_CHORD verbindet lediglich die Start- und Endpunkte mit einer geraden Linie, während IMG_ARC_PIE eine kreisförmige Grenze erzeugt (wenn beide verwendet werden, wird IMG_ARC_CHORD wirksam). IMG_ARC_NOFILL gibt an, dass der Bogen oder die Sehne nur einen Umriss und keine Füllung hat. IMG_ARC_EDGED gibt eine gerade Linie an, die den Start- und Endpunkt mit dem Mittelpunkt verbindet. In Verbindung mit IMG_ARC_NOFILL ist dies eine gute Möglichkeit, den Umriss des Kreisdiagramms zu zeichnen (ohne Füllung)
6 Zeichne den Bildtext ein
imagestring – zeichne eine Zeichenfolge horizontal
?? Syntax: boolimagestring( resources image, intfont, intx , inty, string s, intcol)
??imagestring() verwendet col color, um den String s in die x-, y-Koordinaten des durch image dargestellten Bildes zu zeichnen (dies ist die Koordinate des oberen). Linke Ecke der Zeichenfolge, das gesamte Bild Die obere linke Ecke ist 0,0). Wenn die Schriftart 1, 2, 3, 4 oder 5 ist, wird die integrierte Schriftart verwendet.
??imagestringup – eine Zeichenfolge vertikal zeichnen
??Syntax: boolimagestringup(resource image, intfont, intx, inty, string s, intcol)
??imagestring() verwendet col color, um die Zeichenfolge s vertikal zu den x- und y-Koordinaten des durch image dargestellten Bildes zu zeichnen (die obere linke Ecke des Bildes ist 0, 0). Wenn die Schriftart 1, 2, 3, 4 oder 5 ist, wird die integrierte Schriftart verwendet.
imagechar--水平地画一个字符
??语法:boolimagechar( resource image, intfont, intx, inty, string c, intcolor )
??imagechar() 将字符串c的第一个字符画在image指定的图像中,其左上角位于x,y(图像左上角为0, 0),颜色为color。如果font是1,2,3,4 或5,则使用内置的字体(更大的数字对应于更大的字体)。
??imagecharup--垂直地画一个字符
??语法:boolimagecharup( resource image, intfont, intx, inty, string c, intcolor )
??imagecharup() 将字符c垂直地画在image指定的图像上,位于x,y(图像左上角为0, 0),颜色为color。如果font为1,2,3,4 或5,则使用内置的字体。
??imagettftext--用TrueType 字体向图像写入文本
??语法:array imagettftext( resource image, float size, float angle, intx, inty, intcolor, string fontfile, string text )
例子:
<?<span>php $im</span>= imagecreate(<span>150</span>,<span>150</span>); <span>//</span><span>创建一个150*150的画布</span>$bg= imagecolorallocate($im, <span>255</span>, <span>255</span>, <span>255</span><span>); </span><span>//</span><span>设置画布的背景颜色为白色</span>$black = imagecolorallocate($im, <span>0</span>, <span>0</span>, <span>0</span>); <span>//</span><span>设置一个颜色变量为黑色</span>$<span>string</span>=<span>"</span><span>LAMPBrother</span><span>"</span>; <span>//</span><span>声明一个用于在图像中输出的字符串</span>imageString($im, <span>3</span>, <span>28</span>, <span>70</span>, $<span>string</span><span>, $black); </span><span>//</span><span>水平将字符串$string输出到图像中</span>imageStringUp($im, <span>3</span>, <span>59</span>, <span>115</span>, $<span>string</span><span>, $black); </span><span>//</span><span>垂直由下而上输出$string到图像中</span><span>for</span>($i=<span>0</span>,$j=strlen($<span>string</span>); $i<strlen($<span>string</span>); $i++,$j--<span>){ </span><span>//</span><span>使用循环单个字符输出到图像中</span>imageChar($im, <span>3</span>, <span>10</span>*($i+<span>1</span>), <span>10</span>*($i+<span>2</span>), $<span>string</span><span>[$i], $black); </span><span>//</span><span>向下倾斜输出每个字符</span>imageCharUp($im, <span>3</span>, <span>10</span>*($i+<span>1</span>), <span>10</span>*($j+<span>2</span>), $<span>string</span>[$i], $black); <span>//</span><span>向上倾斜输出每个字符</span><span>} header(</span><span>'</span><span>Content-type: image/png</span><span>'</span>); <span>//</span><span>设置输出的头部标识符</span>imagepng($im); <span>//</span><span>输出PNG格式的图片</span>?>
以上就介绍了动态图像处理 — php(34),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。