像验证码或根据动态数据生成统计图标,以及前面介绍的一些GD库操做等都属于动态绘制图像。而在web开发中,也会常常去处理服务器中已存在的图片。例如,根据一些需求对图片进行缩放、加水印、裁剪、翻转和旋转等改图的操做。在web应用中,常常使用的图片格式有GIF、JPEG和PNG中的一种或几种,固然GD库也能够处理其余格式的图片,但都不多用到。因此安装GD库时,至少安装GIF、JPEG或PNG三种格式中的一种。php
在前面介绍的画布管理中,使用imagecreate()和imageCreateTrueColor()两个函数去建立画布资源。但若是须要对本身已有的图片进行处理,只要将这个图片做为画布资源便可,也就是咱们所说的建立图片背景。能够经过下面介绍的几个函数,打开服务器或网络文件中已经存在的GIF、JPEG和PNG图像,返回一个图像标识符,表明了从给定的文件名取得的图像做为操做的背景资源。它们的原型以下所示,它们在失败时都会返回一个空字符串,而且输出一条错误信息。web
resource imagecreatefromjpeg(string $filename) //从JPEG文件或URL新建一图像 resource imagecreatefrompng(string $filename) //从PNG文件或URL新建一图像 resource imagecreatefromgif(string $filename) //从GIF文件或URL新建一图像
无论使用哪一个函数建立的图像资源,用完之后都须要使用imagedestroy()函数进行销毁。再有就是图片格式对应的问题,任何一种方式打开的图片资源均可以保存为同一种格式。例如,对于使用imagecreatefromjpeg()函数建立的图片资源,可使用imagepng()函数以PNG格式将图像输出到浏览器或文件。固然最好是打开的是哪一种格式的图片,就保存成对应的图片格式。若是要作到这一点,咱们还须要先认识一下getimagesize()函数,经过图片名称就能够获取图片的类型、宽度和高度等。该函数的原型以下所示:数组
array getimagesize(string filename[,array &imageinfo]) //获取图片的大小和类型
若是不能访问filename指定的图像或者其不是有效图像,该函数将返回FALSE并产生一条E_WARNING级的错误。若是不出错,getimagesize()返回一个具备四个单元的数组,索引0包含图像宽度的像素值,索引1包含图像高度的索引值,索引2是图像类型的标记:1=GIF,2=JPG,3=PNG,4=SWF等,索引3是文本字符串,内容为“height=”yyy” width=”xxx””,能够直接用于<IMG>标记。以下所示:浏览器
<?php list($width,$height,$type,$attr) = getimagesize("image/brophp.jpg"); echo "<img src='image/brophp.jpg'".$attr.">"; ?>
下面的例子声明一个image()函数,能够打开GIF、JPG和PNG中任意格式的图片,并在图片的中间加上一个字符串后,保存成原来的格式(文字水印)。在之后的开发中,若是须要一样的操做(打开的是哪一种格式的图片,也保存成对应格式的文件),能够参与本例的模式,代码以下所示:服务器
<?php //向不一样格式的图片中间画一个字符串(也是文字水印) function image($filename,$string){ //获取图片的属性,第一个宽度,第二个高度,类型1=>gif,2=>jpeg,3=>png list($width,$height,$type) = getimagesize($filename); //能够处理的图片类型 $types = array(1=>"gif",2=>"jpeg",3=>"png",); //经过图片类型去组合,能够建立对应图片格式的,建立图片资源的GD库函数 $createfrom = "imagecreatefrom".$types[$type]; //经过“变量函数”去打对应的函数去建立图片的资源 $image = $createfrom($filename); //设置居中字体的X轴坐标位置 $x = ($width-imagefontwidth(5)*strlen($string))/2; //设置居中字体的Y轴坐标位置 $y = ($height-imagefontheight(5))/2; //设置字体的颜色为红色 $textcolor = imagecolorallocate($image, 255, 0, 0); //向图片画一个指定的字符串 imagestring($image, 5, $x, $y, $string, $textcolor); //经过图片类型去组合保存对应格式的图片函数 $output = "image".$types[$type]; //经过变量函数去保存对应格式的图片 $output($image,$filename); imagedestroy($image); } image("brophp.gif","GIF"); image("brophp.jpg", "JPEG"); image("brophp.png", "PNG"); ?>