Manipulation von PHP-Grafikbildern

WBOY
Freigeben: 2016-08-08 09:20:09
Original
797 Leute haben es durchsucht

Einführung in die GD-Bibliothek

GD bezieht sich auf die GD-Bibliothek von PHP, eine Erweiterungsbibliothek, die zur Verarbeitung von Grafiken über eine Reihe von APIs verwendet wird , Bilder können bearbeitet oder direkt neue Bilder generiert werden.

Neben der Textverarbeitung kann PHP über die GD-Bibliothek auch JPG, PNG, GIF, SWF und andere Bilder verarbeiten. Die GD-Bibliothek wird häufig zum Markieren von Bildern, zur Generierung von Bestätigungscodes usw. verwendet.

PHP hat die GD-Bibliothek standardmäßig integriert, Sie müssen sie nur während der Installation aktivieren.

<span>header("content-type: image/png"); $img=imagecreatetruecolor(100, 100); $red=imagecolorallocate($img, 0xFF, 0x00, 0x00); imagefill($img, 0, 0, $red); imagepng($img); imagedestroy($img);<span><span></span></span></span></preubuntu></divmicrosoft></p> <divmicrosoft yahei sans gb neue font-size:14px line-height:21px><p><span>Linien zeichnen</span></p> <p><divmicrosoft yahei sans gb neue font-size:14px><p><span>Zum Zeichnen von Linien Zum Betrieb müssen Sie zunächst eine neue Leinwand erstellen. Sie können über die Funktion „imagecreatetruecolor“ ein farbtreues leeres Bild erstellen: </span></p> <preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$img = imagecreatetruecolor(100, 100);</span><p><span> Die für den Pinsel in der GD-Bibliothek verwendete Farbe muss über die Funktion imagecolorallocate bestimmt werden. Bestimmen Sie die Farbe des Pinsels, indem Sie den RGB-Farbwert über Parameter festlegen: </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$red = imagecolorallocate($img, 0xFF, 0x00, 0x00);</span><p><span> Dann zeichnen wir die Linie, indem wir die Linie aufrufen segmentieren Sie die Bildlinie und geben Sie den Start- und Endpunkt an. Erhalten Sie schließlich Linien. </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imageline($img, 0, 0, 100, 100, $red);</span><p><span>Nachdem die Linien gezeichnet wurden, wird das Bild über Header und ImagePNG ausgegeben. </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>header("content-type: image/png"); imagepng($img);</span><p><span>Schließlich können Sie imagedestroy aufrufen, um den vom Bild belegten Speicher freizugeben. </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imagedestroy($img);</span><p><span>Durch die obigen Schritte können Sie feststellen, dass das Zeichnen von Grafiken mit PHP sehr einfach ist, aber oft müssen wir nicht nur Bilder ausgeben, sondern möglicherweise auch eine Bilddatei, was über die imagepng-Funktion erfolgen kann, um das gezeichnete Bild durch Angabe eines Dateinamens in einer Datei zu speichern. </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imagepng($img, 'img.png');</span></preubuntu></preubuntu></preubuntu></preubuntu></preubuntu></preubuntu></divmicrosoft></p> <divmicrosoft yahei sans gb neue font-size:14px line-height:21px><p>Zeichnen Sie Text in das Bild</p> <p><divmicrosoft yahei sans gb neue font-size:14px><p><span>Die GD-Bibliothek kann grundlegende Operationen für eine Vielzahl von Grafiken ausführen , häufig verwendet: Zeichnen von Linien, Hintergrundfüllung, Zeichnen von Rechtecken, Zeichnen von Text usw. </span></p> <p><span>Ähnlich wie beim Zeichnen von Linien müssen Sie zunächst ein neues Bild erstellen und die Farbe initialisieren. </span></p> <preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$img = imagecreatetruecolor(100, 100); $red = imagecolorallocate($img, 0xFF, 0x00, 0x00);</span><p><span>Dann verwenden Sie die Funktion imagestring, um Text zu zeichnen. Diese Funktion hat viele Parameter: imagestring ( resources $image , int $font , int $x , int $y , string $ s, int $col), Sie können die Schriftgröße über $font festlegen, x,y legen die Position der Textanzeige fest, $s ist der zu zeichnende Text, $col ist die Farbe des Textes. </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imagestring($img, 5, 0, 0, "Hello world", $red); header("content-type: image/png"); imagepng($img); imagedestroy</span><span>($img); </span></preubuntu></preubuntu></divmicrosoft></p> <p><span>Bilddatei ausgeben</span></p> <p><divmicrosoft yahei sans gb neue font-size:14px><p><span>Vor uns Wir haben gelernt, dass Bilder über imagepng direkt an den Browser ausgegeben werden können, aber oft möchten wir die verarbeiteten Bilder in Dateien speichern, damit sie mehrfach verwendet werden können. Speichern Sie das Bild in einer Datei, indem Sie den Pfadparameter angeben. </span></p> <preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$filename = 'img.png'; imagepng($img, $filename);</span><p><span>Verwenden Sie imagepng, um das Bild im PNG-Format zu speichern. Wenn Sie es in anderen Formaten speichern möchten, müssen Sie andere Funktionen verwenden, um das Bild im JPEG-Format zu speichern Format und imagegif, um das Bild im GIF-Format zu speichern. Es ist zu beachten, dass imagejpeg das Bild komprimiert, sodass Sie auch einen Qualitätsparameter festlegen können. </span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$filename = 'img.jpg'; ?imagejpeg($img, $filename, 80);</span></preubuntu></preubuntu></divmicrosoft></p> <p>Bildbestätigungscode generieren</p> <p><divmicrosoft yahei sans gb neue font-size:14px><p><span>Ein einfacher Bestätigungscode besteht eigentlich aus einigen im Bild ausgegebenen Zeichen kann durch die im vorherigen Kapitel erwähnte Imagestring-Funktion realisiert werden. </span></p> <p><span>Bezüglich der Verarbeitung ist es jedoch häufig erforderlich, eine Interferenzverarbeitung am Bestätigungscode durchzuführen, um die Sicherheit des Bestätigungscodes zu erhöhen und zu verhindern, dass andere Programme ihn automatisch erkennen . Normalerweise wird etwas Rauschen verursacht, um den Verifizierungscode zu stören. Führen Sie Vorgänge wie Kippen und Verdrehen der ausgegebenen Zeichen aus. </span></p> <p><span>Sie können Imagesetpixel verwenden, um Punkte zu zeichnen, um Rauschinterferenzen zu erzielen. Das Zeichnen nur eines Punkts hat jedoch nur geringe Auswirkungen, daher werden hier häufig Schleifen zum zufälligen Zeichnen verwendet. </span></p> <preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>for($i=0;$i<50;$i++) { imagesetpixel($im, rand(0, 100) , rand(0, 100) , $black); imagesetpixel($im, rand(0, 100) , rand(0, 100) , $green); } </span><span></span></preubuntu></divmicrosoft></p> <br><p><br></p> <pre name="code"><?php $img = imagecreatetruecolor(100, 40); $black = imagecolorallocate($img, 0x00, 0x00, 0x00); $green = imagecolorallocate($img, 0x00, 0xFF, 0x00); $white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF); imagefill($img,0,0,$white); //生成随机的验证码 $code = ''; for($i = 0; $i < 4; $i++) { $code .= rand(0, 9); } imagestring($img, 5, 10, 10, $code, $black); //加入噪点干扰 for($i=0;$i<50;$i++) { imagesetpixel($img, rand(0, 100) , rand(0, 100) , $black); imagesetpixel($img, rand(0, 100) , rand(0, 100) , $green); } //输出验证码 header("content-type: image/png"); imagepng($img); imagedestroy($img);
Nach dem Login kopieren

Wasserzeichen zu Bildern hinzufügen

Es gibt im Allgemeinen zwei Möglichkeiten, einem Bild ein Wasserzeichen hinzuzufügen. Eine besteht darin, dem Bild eine Zeichenfolge hinzuzufügen, und die andere darin, dem Bild ein Logo oder ein anderes Bild hinzuzufügen.

Da es sich hier um vorhandene Bilder handelt, können Sie mit imagecreatefromjpeg direkt eine Leinwand aus vorhandenen Bildern erstellen und Bilder direkt aus Bilddateien erstellen.

<span>$im = imagecreatefromjpeg($filename);</span><p><span>创建图像对象以后,我们就可以通过前面的GD函数,绘制字符串到图像上。如果要加的水印是一个logo图片,那么就需要再建立一个图像对象,然后通过GD函数imagecopy将logo的图像复制到源图像中。</span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>$logo = imagecreatefrompng($filename); imagecopy($im, $logo, 15, 15, 0, 0, $width, $height);</span><p><span>当将logo图片复制到原图片上以后,将加水印后的图片输出保存就完成了加水印处理。</span></p><preubuntu mono line-height:1.6em font-size:13px word-break:break-word><span>imagejpeg(</span><span>$im, $filename); </span></preubuntu></preubuntu></preubuntu></divmicrosoft></p> <br><p></p> <pre name="code"><?php //这里仅仅是为了案例需要准备一些素材图片 $url = 'http://www.iyi8.com/uploadfile/2014/0521/20140521105216901.jpg'; $content = file_get_contents($url); $filename = 'tmp.jpg'; file_put_contents($filename, $content); $url = 'http://wiki.ubuntu.org.cn/images/3/3b/Qref_Edubuntu_Logo.png'; file_put_contents('logo.png', file_get_contents($url)); //开始添加水印操作 $im = imagecreatefromjpeg($filename); $logo = imagecreatefrompng('logo.png'); $size = getimagesize('logo.png'); imagecopy($im, $logo, 15, 15, 0, 0, $size[0], $size[1]); header("content-type: image/jpeg"); imagejpeg($im);
Nach dem Login kopieren

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了PHP图形图像操作,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!