Heim Backend-Entwicklung PHP-Tutorial php图形图像处理基础

php图形图像处理基础

Jun 23, 2016 pm 01:29 PM

<?php/*GD库简介GD指的是Graphic Device,php的GD库是用来处理图形的扩展库,通过GD库提供的一系列API,可以对图像进行处理或者直接生成新的图片php除了能进行文本处理以外,通过GD库,可以对JPG、PNG、GIF、SWF等进行处理。GD库常用在图片加水印,验证码声称等方面php默认已经生成了GD库,只需要在安装的时候开启就行了*/header("content-type:image/png");#新建一个画布,通过imagecreatetruecolor函数可以创建一个真彩色的空白图片$img = imagecreatetruecolor(100, 100);$red = imagecolorallocate($img,0xFF,0x00,0x00);imagefill($img,0,0,$red);imagepng($img);$imagedestroy($img);/*绘制线条GD库中对画笔所用的颜色,需要通过imagecolorallcoate函数进行分配,通过参数设定RGB的颜色值来确定画笔的颜色*/$red = imagecolorallocate($img,0xFF,0x00,0x00);//然后我们可以通过调用绘制线段函数imageline进行线条的绘制,通过指定起点跟终点来最终得到线条imageline($img,0,0,100,100,$red)//绘制好后,通过header与imagepng进行图像输出header("content-type:image/png")imagepng($img)//最后可以调用imagedestroy来释放该图片占用的内存imagedestroy($img)/*在图像中绘制文字与绘制线条类似,首先要新建一个图片与初始化颜色然后使用imagestring函数来进行文字的绘制,这个函数的参数很多imagestring(resource $image,int $font,int $x,int $y,string $s,int $col)可以通过$font来设置字体,x,y来设置文字显示的位置,$s是要绘制的文字,$col是文字的颜色*/imagestring($img,5,0,0,"hello world",$red);/*生成图像验证码简单的验证码其实就是在图片中输出了几个字符,通过上面的imagestring函数就能实现但是处理上,为了使验证码更加安全,防止其他程序自动识别,因此常常需要对验证码进行一些干扰处理,通常会采用绘制一些噪点干扰线段,对输出的字符进行倾斜/扭曲等操作可以使用imagesetpixel绘制点来实现噪点干扰,但是只绘制一些点的作用不但,因此这里常常会使用循环等进行随机绘制*/$img = imagecreatetruecolor(100,40);$black = imagecolorallocate($img,0x00,0x00,0x00);$green = imagecolorallocate($img,0x00,0xFF,0x00);$white = imagecolorallocate($img,0xFF,0x00,0x00);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);/*给图片加水印给图片加水印的方法有两种,一种是在图片上加上一个字符串,另一种是在图片上加上一个logo或者其他的图片因为是已经存在的图片,可以直接从已经存在的图片中建立画布,通过imagecreatefromjpeg可以直接从图片文件创建图像*/$img = imagecreatefromjpeg($filename);/*创建图像对象以后,我们就可以通过前面的GD函数,绘制字符串到图像上,如果要加的水印是一个logo图片,那么就需要在建立一个图像对象然后通过GD函数imagecopy将logo的图像复制到源图像中*/$logo = imagecreatefrompng($filename);imagecopy($img,$logo,15,15,0,0,$width,$height)//将logo图片复制到源图片上以后,将加水印后的图片输出保存就完成了加水印处理//这里仅仅是为了案例需要准备一些素材图片$url = 'http://www.stchat.cn/data/attachment/forum/201506/12/100759pidbdaydh8dy7iby.jpg';$content = file_get_contents($url);$filename = 'tmp.jpg';file_put_contents($filename, $content);$url = '';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

钟志远  江苏南京 904727147

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Wie funktioniert die Session -Entführung und wie können Sie es in PHP mildern? Wie funktioniert die Session -Entführung und wie können Sie es in PHP mildern? Apr 06, 2025 am 12:02 AM

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Apr 03, 2025 am 12:04 AM

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

Wie setze ich nach dem Neustart des Systems automatisch Berechtigungen von Unixsocket fest? Wie setze ich nach dem Neustart des Systems automatisch Berechtigungen von Unixsocket fest? Mar 31, 2025 pm 11:54 PM

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

Wie debugge ich den CLI -Modus in PhpStorm? Wie debugge ich den CLI -Modus in PhpStorm? Apr 01, 2025 pm 02:57 PM

Wie debugge ich den CLI -Modus in PhpStorm? Bei der Entwicklung mit PHPSTORM müssen wir manchmal den PHP im CLI -Modus (COMS -Zeilenschnittstellen) debuggen ...

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was genau ist das nicht blockierende Merkmal von ReactPhp? Wie gehe ich mit seinen blockierenden E/A -Operationen um? Was genau ist das nicht blockierende Merkmal von ReactPhp? Wie gehe ich mit seinen blockierenden E/A -Operationen um? Apr 01, 2025 pm 03:09 PM

Eine offizielle Einführung in das nicht blockierende Merkmal der detaillierten Interpretation der nicht blockierenden Funktion von ReactPhp hat viele Fragen vieler Entwickler gestellt: "Reactphpisnon-BlockingByDefault ...

See all articles