Home > Backend Development > PHP Tutorial > php图形图像处理基础

php图形图像处理基础

WBOY
Release: 2016-06-23 13:29:59
Original
868 people have browsed it

<?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);?>
Copy after login

钟志远  江苏南京 904727147

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template