Maison développement back-end tutoriel php 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);?>
Copier après la connexion

钟志远  江苏南京 904727147

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Expliquez les jetons Web JSON (JWT) et leur cas d'utilisation dans les API PHP. Apr 05, 2025 am 12:04 AM

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Comment fonctionne le détournement de session et comment pouvez-vous l'atténuer en PHP? Comment fonctionne le détournement de session et comment pouvez-vous l'atténuer en PHP? Apr 06, 2025 am 12:02 AM

Le détournement de la session peut être réalisé via les étapes suivantes: 1. Obtenez l'ID de session, 2. Utilisez l'ID de session, 3. Gardez la session active. Les méthodes pour empêcher le détournement de la session en PHP incluent: 1. Utilisez la fonction Session_RegeReate_id () pour régénérer l'ID de session, 2. Stocker les données de session via la base de données, 3. Assurez-vous que toutes les données de session sont transmises via HTTPS.

Décrivez les principes solides et comment ils s'appliquent au développement de PHP. Décrivez les principes solides et comment ils s'appliquent au développement de PHP. Apr 03, 2025 am 12:04 AM

L'application du principe solide dans le développement de PHP comprend: 1. Principe de responsabilité unique (SRP): Chaque classe n'est responsable d'une seule fonction. 2. Principe ouvert et ferme (OCP): les changements sont réalisés par extension plutôt que par modification. 3. Principe de substitution de Lisch (LSP): les sous-classes peuvent remplacer les classes de base sans affecter la précision du programme. 4. Principe d'isolement d'interface (ISP): utilisez des interfaces à grain fin pour éviter les dépendances et les méthodes inutilisées. 5. Principe d'inversion de dépendance (DIP): les modules élevés et de bas niveau reposent sur l'abstraction et sont mis en œuvre par injection de dépendance.

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système? Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système? Mar 31, 2025 pm 11:54 PM

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système. Chaque fois que le système redémarre, nous devons exécuter la commande suivante pour modifier les autorisations d'UnixSocket: sudo ...

Comment déboguer le mode CLI dans phpstorm? Comment déboguer le mode CLI dans phpstorm? Apr 01, 2025 pm 02:57 PM

Comment déboguer le mode CLI dans phpstorm? Lors du développement avec PHPStorm, nous devons parfois déboguer PHP en mode interface de ligne de commande (CLI) ...

Expliquez la liaison statique tardive en PHP (statique: :). Expliquez la liaison statique tardive en PHP (statique: :). Apr 03, 2025 am 12:04 AM

Liaison statique (statique: :) ​​implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelle est exactement la caractéristique non bloquante de ReactPHP? Comment gérer ses opérations d'E / S de blocage? Quelle est exactement la caractéristique non bloquante de ReactPHP? Comment gérer ses opérations d'E / S de blocage? Apr 01, 2025 pm 03:09 PM

Une introduction officielle à la caractéristique non bloquante de l'interprétation approfondie de ReactPHP de la caractéristique non bloquante de ReactphP a suscité de nombreux développeurs: "ReactPhpisnon-blockingByDefault ...

See all articles