您的位置:首页 > 编程语言 > PHP开发

PHP的GD函数库图形类函数(创建缩略图、给图片加水印、给图片加文字、画布划线)

2014-03-17 15:14 573 查看
本笔记主要是关于GD(GRAPHICS DRAW)的函数笔记。这个开放的动态源码在PHP5是被默认安装的,要激活的话还是需要修改PHP.INI文件,去掉相关注释。后面一些例子包括创建缩略图、给图片加水印、给图片加文字、画布划线等。有例图的哦!

在PHP中创建一个图像通畅需要以下4个步骤:

a.创建一个背景图像,以后所有操作都是基于此背景。

b.在图像上绘图轮廓或者输入文本

c.输出最终图形

d.清楚内存中所有资源

1.建立一个图像标示

resource imagecreatetruecolor(int x_size ,int y_size)

2.填充颜色

int imagecolorallocate(resource image ,int red ,int green ,int blue);

3.填充图片

bool imagefill(resource image,int x,int y,int color)

4.画线

bool imageline(resource image ,int x1,int y1,int x2,int y2,int color)

5.画字符串

bool imagestring(resource image,int font ,int x,int y ,string s,int cool)

#font 的字体不是内置的,需要导入字体库后才可以正常使用。

6.欺骗浏览器,让它认为PHP页面是真正的图片。

Header("Content-type:image/png");

7.发送标题后就可以使用imagepng()函数来输出图像数据

bool imagepng(resource image [, string filename])

8.清除所占用缓存

bool imagedestroy(resource image)

9.画一张浅蓝色的画布,上面有白线有白字。效果如下图。

<?php

$height=300;

$width=300;

$im =ImageCreateTrueColor($width,$height);//创建真彩色的图像

$white =ImageColorAllocate($im ,255,255,255);

$blue =ImageColorAllocate($im ,0,0,64);

ImageFill($im,0,0,$blue);//浅蓝色的背景

ImageLine($im,0,0,$width,$height,$white);//在图像上面画一条白线

ImageString($im,4,80,150,"PHP",$white);//写出白色的"PHP"

Header("Content-type:image/png");

ImagePng($im);

ImageDestroy($im);

?>





10.创建缩略图

bool imagecopyresampled(resource dst_image,resource src_image,int dst_x,int dst_y,int 

src_x,int src_y,int dst_w,int dst_g,int src_w,int src_h)

#其中dst_image是新建图,src_image是原图。

#dst_x:设定需要载入的图片在新图中的x坐标

#src_x:设定载入图片要载入的区域x坐标

resource iamgecreatefromjpeg(string filename);

#这个函数返回一个图像标识符,代表从给定文件名取得图像。

#如果使用其它格式,PHP也提供相应函数,使用方法基本相同。

<?php

$image = imagecreatefromjpeg("images/cat.jpg");

$width = imagesx($image);

$height = imagesy($image);

$thumb_width = $width *0.5;

$thumb_height = $height *0.5;

$thumb = imagecreatetruecolor($thumb_width,$thumb_height);//创建一个原图一半大小的画布

imagecopyresampled($thumb,$image,0,0,0,0,$thumb_width,$thumb_height,$width,$height);

imagejpeg($thumb,"images/cat_thumb.jpg",100);//将缩略图保存到文件,第三个参数是质量

imagedestroy($thumb);//清楚占用内存

?>

<p>原图</p>

<img src="images/cat.jpg" />

<p>缩略图</p>

<img src="images/cat_thumb.jpg" />





11.给图片加水印

#加水印都是有透明度的,所以需要选择一个PNG格式的图片作为需要添加的水印。

resource iamgecreatefrompng(string filename)

#指向的路径格式如果不是PNG的画,会报错。

#加水印也要用到imagecopyresampled()函数

#PHP还提供imagecopy()函数,但是这个函数复制并没有那么平滑

<?php

$image =imagecreatefromjpeg("images/shaobing.jpg");

$watermark =imagecreatefrompng("images/watermark.png");

$width =imagesx($watermark);

$height = imagesy($watermark);

//将水印加到图片左上角

imagecopyresampled($image,$watermark,0,0,0,0,$width,$height,$width,$height);

imagejpeg($image,"image/shaobing_water.jpg",100);

imagedestroy($image);

?>

<p>原图:</p>

<img src="images/shaobing.jpg" />

<p>水印:</p>

<img src="images/watermark.png" />

<p>合成图:</p>

<img src="images/shaobing_water.jpg" />





12.给图片加文字

imagettftext(resource image ,float size,folat angle,int x,int y ,int color ,string 

fontfile,string text)

#size 字体大小

#angle 角度,0为左向右,90为下向上,逆时针计算。

#x y 第一个字符的基本点,大概是字符的左下角位置。

#color 颜色索引,使用负颜色的索引值具有关闭防锯齿的效果。

#fontfile 想要使用TRUETYPE字体的路径

#text 文本文字,这个函数支持的是UTF-8的编码,不是这个编码的画,需要对字符进行编码转换。

string mb_convert_encoding (string str ,string to_encoding  [,mixed from_encoding])

#这个函数把输入的str字体从from_encoding编码转换为to_endcoding编码,第三个参数省略的时候

会被自动设定为PHP文件的编码。

#当不确定转换的字符串是什么样格式的时候,可以设定from_encoding为多个字符集,

如"UTF8,GBK,GB2312"。

实例:

<?php

$image =imagecreatefromjpeg("images/shaobing.jpg");

$pink = ImageColorAllocate($image,255,255,255);

//$font_file 字体的路径,视操作系统而定,可以是simhei.ttf(黑体)

//SIMKAI.TTF(楷体),SIMFANG.TTF(仿宋),SIMSUN.TTC(宋体&新宋体)等GD支持的中文字体

$font_file ="C:\WINDOWS\Fonts\msyhbd.ttf";

$str ="我喜欢烧饼! >_< ";

$str =mb_convert_encoding($str,"UTF-8","GBK");

imagettftext($image,25,10,100,200,$pink,$font_file,$str);//设置字体颜色

imagejpeg($image,"image/shaobing_text.jpg",100);//将带有文字的图片保存到文件

imagedestroy($image);

?>

<p>原图:</p>

<img src="images/shaobing.jpg" />

<p>合成图:</p>

<img src="images/shaobing_text.jpg" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  水印