PHP 图形处理函数库

 

使用本功能需要在编译 php 前先安装 gd library,可到 http://www.boutell.com/gd 下载。在 1.6.2 版以前的 gd library 有支持 gif 格式的功能,但因为 gif 格式使用的 lzw 演算法牵涉到 unisys 的专利权,因此在 gd library 1.6.2 版之后不支持 gif 的格式。在安装 1.6.2 版时系统必须要有 libpng 及 zlib 二个动态链接函数库。前者可在 http://www.cdrom.com/pub/png 下载;后者可在 http://www.cdrom.com/pub/infozip/zlib 下载。而 gd library 也支持 truetype 字型,请先到 http://www.freetype.org 下载动态链接程序库。

php 在 3.0.13 版之后,终于支持了 png 的图型格式,使用 png 就不怕会有版权的问题了,而且在 php 这个版本以后,安装编译时会检查 gd library 支持的是旧的 gif 格式还是新的 png 格式来决定是否使用 gif 或 png 的专用函数。

若真的需要使用 gd library 中有关 gif 的部份,不妨找较旧的 freebsd 或者 linux 版本,里面可能会有这些函数,但可能会因为侵犯到 unisys 的专利权,而引发法律问题。同时请注意旧版的 ttf 字型相关函数可能不能用。

以下是简单的例子

<?php 
header ( "content-type: image/gif" ); 
$im = imagecreate ( 400 , 30 ); 
$black = imagecolorallocate ( $im , 0 , 0 , 0 ); 
$white = imagecolorallocate ( $im , 255 , 255 , 255 ); 
imageline ( $im , 1 , 1 , 350 , 25 , $black ); 
imagearc ( $im , 200 , 15 , 20 , 20 , 35 , 190 , $white ); 
imagestring ( $im , 5 , 4 , 10 , "graph test!!" , $white ); 
imagegif ( $im ); 
imagedestroy ( $im ); 
?>

getimagesize : 取得图片的长宽。 

imagearc : 画弧线。 

imagechar : 写出横向字符。 

imagecharup : 写出直式字符。

imagecolorallocate : 匹配颜色。 

imagecolortransparent : 指定透明背景色。 

imagecopyresized : 复制新图并调整大小。 

imagecreate : 建立新图。 

imagedashedline : 绘虚线。 

imagedestroy : 结束图形。 

imagefill : 图形着色。 

imagefilledpolygon : 多边形区域着色。 

imagefilledrectangle : 矩形区域着色。 

imagefilltoborder : 指定颜色区域内着色。

imagefontheight : 取得字型的高度。 

imagefontwidth : 取得字型的宽度。 

imageinterlace : 使用交错式显示与否。 

imageline : 绘实线。 

imageloadfont : 载入点阵字型。 

imagepolygon : 绘多边形。 

imagerectangle : 绘矩形。 

imagesetpixel : 绘点。 

imagestring : 绘横式字符串。 

imagestringup : 绘直式字符串。 

imagesx : 取得图片的宽度。 

imagesy : 取得图片的高度。 

imagettfbbox : 计算 ttf 文字所占区域。 

imagettftext : 写 ttf 文字到图中。 

imagecolorat : 取得图中指定点颜色的索引值。 

imagecolorclosest : 计算色表中与指定颜色最接近者。 

imagecolorexact : 计算色表上指定颜色索引值。 

imagecolorresolve : 计算色表上指定或最接近颜色的索引值。 

imagecolorset : 配置色表上指定索引的颜色。 

imagecolorsforindex : 取得色表上指定索引的颜色。 

imagecolorstotal : 计算图的颜色数。 

imagepsloadfont : 载入 postscript 字型。 

imagepsfreefont : 卸下 postscript 字型。 

imagepsencodefont : postscript 字型转成向量字。 

imagepstext : 写 postscript 文字到图中。 

imagepsbbox : 计算 postscript 文字所占区域。 

imagecreatefrompng : 取出 png 图型。 

imagepng : 建立 png 图型。 

imagecreatefromgif : 取出 gif 图型。 

imagegif : 建立 gif 图型。

getimagesize
取得图片的长宽。
语法: 

array getimagesize(string filename, array [imageinfo]);
返回值: 数组
函数种类: 图形处理

内容说明: 本函数可用来取得 gif、jpeg 及 png 三种 www 上图片的高与宽,不需要安装 gd library 就可以使用本函数。返回的数组有四个元素。返回数组的第一个元素 (索引值 0) 是图片的高度,单位是像素 (pixel)。第二个元素 (索引值 1) 是图片的宽度。第三个元素 (索引值 2) 是图片的文件格式,其值 1 为 gif 格式、 2 为 jpeg/jpg 格式、3 为 png 格式。第四个元素 (索引值 3) 为图片的高与宽字符串,height=xxx width=yyy。可省略的参数 imageinfo 用来取得一些图片的相关信息,例如 iptc (http://www.xe.net/iptc) 的 app13 标记,就可以加在图片中,可利用 iptcparse() 来解析。

使用范例
<?php
function myimg($imgfile) {
$size = getimagesize($imgfile);
echo "<img src=../..//"$imgfile/" $size.>";
}
myimg("img/img1.gif");
myimg("img/img2.png");
?>

imagearc

画弧线。
语法: 

int imagearc(int im, int cx, int cy, int w, int h, int s, int e, int col);
返回值: 整数
函数种类: 图形处理

内容说明: 本函数用来画弧线。原点坐标 (0,0) 为图片的左上角,参数 cx、cy 为椭圆心坐标,参数 w 为水平轴长,参数 h 为垂直轴长,参数 s 及 e 分别为起始角与结束角,参数 col 为弧线的颜色。参数 im 表示图形的 handle。

imagecharup
写出直式字符。
语法:

 int imagecharup(int im, int font, int x, int y, string c, int col);
返回值: 整数
函数种类: 图形处理

内容说明: 本函数用来书写直式的字符。原点坐标 (0,0) 为图片的左上角,参数 font 表示字体的大小,从最小的 1 起,参数 x、y 是写入字符的坐标值,参数 c 为欲写出的字符,参数 col 为字的颜色。参数 im 表示图形的 handle。
参考: imageloadfont()

imagecolorallocate
匹配颜色。
语法: 

int imagecolorallocate(int im, int red, int green, int blue);
返回值: 整数
函数种类: 图形处理

内容说明: 本函数用来匹配图形的颜色,供其它绘图函数使用。参数 im 表示图形的 handle。参数 red、green、blue 是色彩三原色,其值从 0 至 255。

使用范例
<?
$white = imagecolorallocate($im, 255,255,255);
$black = imagecolorallocate($im, 0,0,0);
?>

imagecopyresized
复制新图并调整大小。
语法:

int imagecopyresized(int dst_im, int src_im, int dstx, int dsty, int srcx, int srcy, int dstw, int dsth, int srcw, int srch);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数可复制新图,并重新调整图片的大小尺寸。参数都是目的在前,来源在后。参数 dst_im 及 src_im 为图片的 handle。参数 dstx、dsty、srcx、srcy 分别为目的及来源的坐标。参数 dstw、dsth、srcw、srch分别为来源及目的的宽及高,若欲调整新图的尺寸就在这儿配置。

imagecopyresized
复制新图并调整大小。
语法: int imagecopyresized(int dst_im, int src_im, int dstx, int dsty, int srcx, int srcy, int dstw, int dsth, int srcw, int srch);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数可复制新图,并重新调整图片的大小尺寸。参数都是目的在前,来源在后。参数 dst_im 及 src_im 为图片的 handle。参数 dstx、dsty、srcx、srcy 分别为目的及来源的坐标。参数 dstw、dsth、srcw、srch 分别为来源及目的的宽及高,若欲调整新图的尺寸就在这儿配置。

imagedashedline
绘虚线。
语法: int imagedashedline(int im, int x1, int y1, int x2, int y2, int col);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数将在图形上画出一条虚线。从 x1、y1 连接到 x2、y2,原点 (0,0) 为图形的左上角。参数 col 为虚线的颜色。
参考: imageline()

imagedestroy
结束图形。
语法: int imagedestroy(int im);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数将图片 handle 解构,释于内存空间。参数 im 为 imagecreate() 所建立的图片 handle。

imagefilledpolygon
多边形区域着色。
语法: int imagefilledpolygon(int im, array points, int num_points, int col);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数将图片的封闭多边形区域着色。参数 points 为数组,代表多边形区域,数组的偶数元素为 x 坐标,奇数元素为 y 坐标,例如 points[0] = x0、points. = y0、points. = x1、points. = y1。参数 num_points 为多边形的转折点数目。参数 col 表示欲涂上的颜色。

imagefilledrectangle
矩形区域着色。
语法: int imagefilledrectangle(int im, int x1, int y1, int x2, int y2, int col);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数将图片的封闭长方形区域着色。参数 x1、y1 及 x2、y2 分别为矩形对角线的坐标。参数 col 表示欲涂上的颜色。

imagefilltoborder
指定颜色区域内着色。
语法: int imagefilltoborder(int im, int x, int y, int border, int col);
返回值: 整数
函数种类: 图形处理
内容说明
本函数将图片中指定的颜色做为边界,着色在其中的封闭区域之中。参数 x、y 为着色区内的坐标,原点 (0,0) 为图形的左上角。参数 border 为颜色值,表填入颜色的边界范围。参数 col 表示欲涂上的颜色。

imagefontheight
取得字型的高度。
语法: int imagefontheight(int font);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数用来取得指定字型的高度,单位为像素 (pixel)。
参考 imagefontwidth() imageloadfont()

imagefontwidth
取得字型的宽度。
语法: int imagefontwidth(int font);
返回值: 整数
函数种类: 图形处理
内容说明
本函数用来取得指定字型的宽度,单位为像素 (pixel)。
参考 imagefontheight() imageloadfont()

imageinterlace
使用交错式显示与否。
语法: int imageinterlace(int im, int [interlace]);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数用来决定图片是否使用交错式显示 (interlace)。欲使用交错式显示,则将参数 interlace 值设为 1。不想使用交错式显示图形则将之设为 0。返回值 1 表示已配置成交错式、0 表示已设成非交错式。


imageline
绘实线。
语法: int imageline(int im, int x1, int y1, int x2, int y2, int col);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数将在图形上画出一条实线。从 x1、y1 连接到 x2、y2,原点 (0,0) 为图形的左上角。参数 col 为实线的颜色。
参考 imagedashedline()

imageloadfont
载入点阵字型。
语法: int imageloadfont(string file);
返回值: 整数
函数种类: 图形处理
内容说明
本函数用来载入用户自订的点阵字型。返回值为字型的代号,此值为大于 5 的整数。字型文件的格式如表 byte偏移类型说明 0-3int文件中字符的数目 4-7int字型的启始 ascii 字符,例如从 ascii 32 的空白开始 8-11int字符的宽度 12-15int字符的高度 16以后char字符的位值,也就是点阵的内容

参考 imagefontheight() imagefontwidth()

imagepolygon
绘多边形。
语法: int imagepolygon(int im, array points, int num_points, int col);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数可在图片上绘出多边形。参数 points 为数组,代表多边形区域,数组的偶数元素为 x 坐标,奇数元素为 y 坐标,例如 points[0] = x0、points. = y0、points. = x1、points. = y1。参数 num_points 为多边形的转折点数目。参数 col 表示多边形线的颜色。

imagerectangle
绘矩形。
语法: int imagerectangle(int im, int x1, int y1, int x2, int y2, int col);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数可在图片上绘出长方形。参数 x1、y1 及 x2、y2 分别为矩形对角线的坐标。参数 col 表示矩形边框的颜色。

imagesetpixel
绘点。
语法: int imagesetpixel(int im, int x, int y, int col);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数可在图片上绘出一点。参数 x、y 为欲绘点的坐标,参数 col 表示该点的颜色。

imagestring
绘横式字符串。
语法: int imagestring(int im, int font, int x, int y, string s, int col);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数在图片上绘出水平的横式字符串。参数 font 为字形,设为 1 到 5 表示使用默认字形。参数 x、y 为字符串起点坐标。字符串的内容放在参数 s 上。参数 col 表示字符串的颜色。
参考 imageloadfont()

imagestringup
绘直式字符串。
语法: int imagestringup(int im, int font, int x, int y, string s, int col);
返回值: 整数
函数种类: 图形处理
内容说明
本函数在图片上绘出铅直的直式字符串。参数 font 为字形,设为 1 到 5 表示使用默认字形。参数 x、y 为字符串起点坐标。字符串的内容放在参数 s 上。参数 col 表示字符串的颜色。
参考 imageloadfont()

imagesx
取得图片的宽度。
语法: int imagesx(int im);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数用来取得图片的宽度数值。

imagesy
取得图片的高度。
语法: int imagesy(int im);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数用来取得图片的高度数值。

imagettfbbox
计算 ttf 文字所占区域。
语法: array imagettfbbox(int size, int angle, string fontfile, string text);
返回值: 数组
函数种类: 图形处理
内容说明: 本函数用来计算并返回 ttf 文字区域框 (bounding box) 大小。参数 size 为字形的尺寸;angle 为字型的角度;fontfile 为字型文件名称,亦可是远端的文件;text 当然就是字符串内容了。返回值为数组,包括了八个元素,头二个分别为左下的 x、y 坐标,第三、四个为右下角的 x、y 坐标,第五、六及七、八二组分别为右上及左上的 x、y 坐标。治募 注意的是欲使用本函数,系统要装妥 gd 及 freetype 二个函数库。

imagettftext
写 ttf 文字到图中。
语法: 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 坐标。治募 注意的是欲使用本函数,系统要装妥 gd 及 freetype 二个函数库。
使用范例
本例建立一个 400x30 pixel 大小的黑底图,并用 arial 向量字体写出 i am number one !! 的白字。

<?php
header("content-type: image/gif");
$im = imagecreate(400,30);
$black = imagecolorallocate($im, 0,0,0);
$white = imagecolorallocate($im, 255,255,255);
imagettftext($im, 20, 0, 10, 20, $white, "/somewhere/arial.ttf", "i am number one !!");
imagegif($im);
imagedestroy($im);
?> 
参考 imagettfbbox()

imagecolorat
取得图中指定点颜色的索引值。
语法: int imagecolorat(int im, int x, int y);
返回值: 整数
函数种类: 图形处理
内容说明
本函数可取得图形中某指定点的颜色索引值 (index)。
参考 imagecolorset() imagecolorsforindex()

imagecolorclosest
计算色表中与指定颜色最接近者
语法: int imagecolorclosest(int im, int red, int green, int blue);
返回值: 整数
函数种类: 图形处理
内容说明
本函数用来计算调色盘中与指定 rgb 颜色最接近的颜色。参数 red、green、blue 分别为红、绿、蓝三原色,也就是所谓的 rgb 值。
参考 imagecolorexact()

imagecolorexact
计算色表上指定颜色索引值。
语法: int imagecolorexact(int im, int red, int green, int blue);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数用来计算调色盘中指定 rgb 颜色的色素索引值。参数 red、green、blue 分别为红、绿、蓝三原色,也就是所谓的 rgb 值。若调色盘中没有指定的颜色,则返回 -1。
参考 imagecolorclosest()

imagecolorresolve
计算色表上指定或最接近颜色的索引值。
语法: int imagecolorresolve(int im, int red, int green, int blue);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数用来计算调色盘中指定 rgb 颜色的色素索引值。参数 red、green、blue 分别为红、绿、蓝三原色,也就是所谓的 rgb 值。若无指定颜色则取得最接近的颜色。无论如何本函数都会有索引值返回。
参考 imagecolorclosest() imagecolorexact()

imagecolorset
配置色表上指定索引的颜色。
语法: boolean imagecolorset(int im, int index, int red, int green, int blue);
返回值: 布尔值
函数种类: 图形处理
内容说明: 本函数用来配置调色盘上指定索引的颜色值。参数 index 为索引值。参数 red、green、blue 分别为红、绿、蓝三原色,也就是所谓的 rgb 值。此函数适合将图片上某颜色改掉,即利用索引的颜色更改图片颜色。
参考 imagecolorat()

imagecolorsforindex
取得色表上指定索引的颜色。
语法: array imagecolorsforindex(int im, int index);
返回值: 数组
函数种类: 图形处理
内容说明: 本函数用来取得调色盘上指定索引的颜色值。参数 index 为索引值。数组返回值分别为红、绿、蓝三原色的值。
参考 imagecolorat() imagecolorset()

 

imagecolorstotal
计算图的颜色数。
语法: int imagecolorstotal(int im);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数用来计算图片的调色盘有几种不同的颜色。
参考 imagecolorat() imagecolorsforindex()

imagepsloadfont
载入 postscript 字型。
语法: int imagepsloadfont(string filename);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数用来载入 postscript type1 字型。参数 filename 为 postscript type1 字型的名称。
参考 imagepsfreefont()

imagepsfreefont
卸下 postscript 字型。
语法: void imagepsfreefont(int fontindex);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数将已载入 postscript type1 字型卸下。参数 fontindex 为载入 postscript type1 字型的 handle。
参考 imagepsloadfont()

imagepsencodefont
postscript 字型转成向量字。
语法: int imagepsencodefont(string encodingfile);
返回值: 整数
函数种类: 图形处理
内容说明: 本函数将 postscript type1 字型转换成向量字。若需要西方语衔募 特殊文字则要 t1lib 函数库。目前 t1lib 提供 isolatin1.enc 和 isolatin2.enc 二套字。若常要使用向量字,可以在 php3.ini/php.ini 中配置 ps.default_encoding,php 系统会自动载入转换。
参考 imagepsloadfont()

imagepstext
写 postscript 文字到图中。
语法: array imagepstext(int image, string text, int font, int size, int foreground, int background, int x, int y, int space, int tightness, float angle, int antialias_steps);
返回值: 数组
函数种类: 图形处理
内容说明
本函数将 postscript type1 字型文字写入图片。参数 image 为图形。text 参数为要写入的字符串。参数 font 则为指定的字型。参数 size 为字的大小,单位为像素 (pixel)。参数 foreground 及 background 分别为前景及背景色,程序会依这二色来修正文字边晕募 锯齿。参数 x,y 为文字的坐标,以左下角开始计算。space 参数为文字间的空隔大小。参数 tightness 为单字间的紧密度。angle 为角度。最后一个参数 antialias_steps 为边缘锯齿状修正的等级,范围为 4 至 16。返回数组有四个元素,第一、二个分别为左下角的 x,y 值,第三、四个元素为右上角的 x,y 值。
参考 imagepsbbox()

 

imagepsbbox
计算 postscript 文字所占区域。
语法: array imagepsbbox(string text, int font, int size, int space, int width, float angle);
返回值: 数组
函数种类: 图形处理
内容说明: 本函数用来计算并返回 postscript 文字区域框 (bounding box) 大小。参数 text 为要写入的字符串。参数 font 则为指定的字型。参数 size 为字的大小,单位为像素 (pixel)。参数 width 为的宽度。angle 为角度。返回数组有四个元素,第一、二个分别为左下角的 x,y 值,第三、四个元素为右上角的 x,y 值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值