查看: 2285|回复: 0

[PHP实例] php输出图像的方法实例分析

发表于 2017-12-12 08:00:01

本文实例讲述了php输出图像的方法。分享给大家供大家参考,具体如下:

PHP作为一种Web语言,无论是解析出的html代码还是二进制的图片,最终都要通过浏览器显示。应用GD2函数绘制图像首先需要用header()函数发送HTTP头信息给浏览器,告知所要输出的图像的类型,然后应用imagegif()函数、imagejpeg()函数或者imagepng()函数等分别输出GIF,JPG和PNG格式的图片。

header(string,replace,http_response_code)

  1. <table border="1" cellspacing="0" cellpadding="2" style="margin-top: 10px; display: table; border-collapse: collapse; margin-bottom: 10px"><tbody><tr><th width="155" style="border-bottom: rgb(153,153,153) 1px solid; min-width: 25px; border-left: rgb(153,153,153) 1px solid; padding-bottom: 5px; min-height: 25px; padding-left: 12px; padding-right: 16px; height: 25px; word-break: break-all; border-top: rgb(153,153,153) 1px solid; border-right: rgb(153,153,153) 1px solid; padding-top: 5px">参数</th><th width="360" style="border-bottom: rgb(153,153,153) 1px solid; min-width: 25px; border-left: rgb(153,153,153) 1px solid; padding-bottom: 5px; min-height: 25px; padding-left: 12px; padding-right: 16px; height: 25px; word-break: break-all; border-top: rgb(153,153,153) 1px solid; border-right: rgb(153,153,153) 1px solid; padding-top: 5px">描述</th></tr><tr><td width="155" style="border-bottom: rgb(153,153,153) 1px solid; min-width: 25px; border-left: rgb(153,153,153) 1px solid; padding-bottom: 5px; min-height: 25px; padding-left: 12px; padding-right: 16px; height: 31px; word-break: break-all; border-top: rgb(153,153,153) 1px solid; border-right: rgb(153,153,153) 1px solid; padding-top: 5px">string</td><td width="360" style="border-bottom: rgb(153,153,153) 1px solid; min-width: 25px; border-left: rgb(153,153,153) 1px solid; padding-bottom: 5px; min-height: 25px; padding-left: 12px; padding-right: 16px; height: 31px; word-break: break-all; border-top: rgb(153,153,153) 1px solid; border-right: rgb(153,153,153) 1px solid; padding-top: 5px">必需。规定要发送的报头字符串。</td></tr><tr><td width="155" style="border-bottom: rgb(153,153,153) 1px solid; min-width: 25px; border-left: rgb(153,153,153) 1px solid; padding-bottom: 5px; min-height: 25px; padding-left: 12px; padding-right: 16px; height: 25px; word-break: break-all; border-top: rgb(153,153,153) 1px solid; border-right: rgb(153,153,153) 1px solid; padding-top: 5px">replace</td><td width="360" style="border-bottom: rgb(153,153,153) 1px solid; min-width: 25px; border-left: rgb(153,153,153) 1px solid; padding-bottom: 5px; min-height: 25px; padding-left: 12px; padding-right: 16px; height: 25px; word-break: break-all; border-top: rgb(153,153,153) 1px solid; border-right: rgb(153,153,153) 1px solid; padding-top: 5px"><p style="padding-bottom: 0px; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">可选。指示该报头是否替换之前的报头,或添加第二个报头。</p><p style="padding-bottom: 0px; margin: 5px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">默认是 true(替换)。false(允许相同类型的多个报头)。</p></td></tr><tr><td width="155" style="border-bottom: rgb(153,153,153) 1px solid; min-width: 25px; border-left: rgb(153,153,153) 1px solid; padding-bottom: 5px; min-height: 25px; padding-left: 12px; padding-right: 16px; height: 25px; word-break: break-all; border-top: rgb(153,153,153) 1px solid; border-right: rgb(153,153,153) 1px solid; padding-top: 5px">http_response_code</td><td width="360" style="border-bottom: rgb(153,153,153) 1px solid; min-width: 25px; border-left: rgb(153,153,153) 1px solid; padding-bottom: 5px; min-height: 25px; padding-left: 12px; padding-right: 16px; height: 25px; word-break: break-all; border-top: rgb(153,153,153) 1px solid; border-right: rgb(153,153,153) 1px solid; padding-top: 5px">可选。把 HTTP 响应代码强制为指定的值。(PHP 4 以及更高版本可用)<br /></td></tr></tbody></table>
复制代码

bool imagegif( resource $image[, string $filename] )

imagegif()函数从image图像以filename为文件名创建一个GIF图像。image参数是imagecreate()或imagecreatefromgif()等创建图像函数的返回值,图像格式为GIF。如果应用imagecolortransparent()函数,则图像设置为透明,格式即为gif。filename参数为可选,如果省略,则原始图像流将被直接输出。

imagejpeg()和imagepng()函数的使用方法与imagegif()函数的使用方法类似,这里不再讨论。

例如:

首先应用header()函数发送HTTP头信息给浏览器告知输出的媒体类型,在这里输出GIF格式的图片,然后创建一副192*36像素的画布,并在画布上绘制"I Like PHP"的文字,最后应用函数imagegif()输出所创建的图像。

  1. <?php
  2. header("Content-type:image/gif");
  3. $image = imagecreatetruecolor(192,36); //新建图像
  4. $trans_color = imagecolorAllocate($image,200,200,200); //分配一个灰色
  5. imagefill($image,0,0,$trans_color); // 从左上角开始填充灰色
  6. $color = imagecolorallocate($image,255,0,255); //设置图像中文字的颜色
  7. imagettftext($image,18,0,50,26,$color,"arial.ttf","I Like PHP");//输出文字
  8. imagegif($image);//输出图像
  9. imagedestroy($image);//释放内存空间
复制代码

运行结果为:

代码解析:

用imagecreatetruecolor(int x,int y)建立的是一幅大小为x和y的黑色图像(默认为黑色),如想改变背景颜色则需要用填充颜色函数imagefill($img,0,0,$color);

imagecreate 新建一个空白图像资源,用imagecolorallocate()添加背景色

array Imagettftext(int im, int size, int angle, int x, int y, int col, string fontfile, string text);

本函数将 TTF (TrueType Fonts) 字型文字写入图片。参数 size 为字形的尺寸;angle 为字型的角度,顺时针计算,0 度为水平,也就是三点钟的方向 (由左到右),90 度则为由下到上的文字;x,y 二参数为文字的坐标值 (原点为左上角);参数 col 为字的颜色;fontfile 为字型文件名称,亦可是远端的文件;text 当然就是字符串内容了。返回值为数组,包括了八个元素,头二个分别为左下的x、y 坐标,第三、四个为右下角的 x、y 坐标,第五、六及七、八二组分别为右上及左上的 x、y 坐标。

注意此函数中的fontfile的路径问题,上例中,字体文件和PHP文件处于同一个目录中。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP图形与图片操作技巧汇总》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。



回复

使用道具 举报