GD库

Posted Irving_yx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GD库相关的知识,希望对你有一定的参考价值。

php图片处理
1.图片背景管理
使用 imagecreate()和 imagecreatetruecolor()函数可以创建画布资源。但如果已经拥有图片进行处理,只需要将这个图片作为画布资源即可,也就是我们所说的创建图片背景。
imagecreatefromjpeg($path)
imagecreatefrompng($path)
imagecreatefromgif($path)

获取图片类型宽度高度等 getimagesize($path)

2.图片放缩
  imagecopyresampled(dst_img,src_img,dst_x,dst_y,src_x,src_y,dst_w,dst_h,src_w,src_h)
自定义图像放缩函数:

 1 function thumb($filename,$width=200,$height=200){
 2 //获取原图像的宽和高
 3 list($width_orig,$height_orig)=getimagesize($filename);
 4 
 5 //换算出比例宽高
 6 if($width && ($width_orig<$height_orig)){
 7 $width=($height/$height_orig)*$width_orig;
 8 }else{
 9 $height=($width/$width_orig)*$height_orig;
10 }
11 
12 $im=imagecreatetruecolor($width,$height);
13 $image=imagecreatefromjpeg($filename);//放缩jpeg格式
14 imagecopyresampled($im,$image,0,0,0,0,$width,$height,$width_orig$height_orig);
15 
16 imagejpeg($im,$filename,100);
17 
18 imagedestroy($im);
19 imagedestroy($image);
20 }

 


3.图片裁剪
自定义裁剪函数:

 1 function cut($filename,$x,$y,$width,$height){
 2 //创建背景资源
 3 $back=imagecreatefromjpeg($filename);
 4 //创建保存裁剪后资源
 5 $im=imagecreatetruecolor($width,$height);
 6 //裁剪
 7 imagecopyresampled($im,$back,0,0,$x,$y,$width,$height,$width$height);
 8 //覆盖原图,如果不想覆盖可加前缀
 9 imagejpeg($im,$filename);
10 
11 imagedestroy($im);
12 imagedestroy($back);

 


4.添加水印
自定义水印函数:

 

 1 function watermark($filename,$water){
 2 //获取背景图的宽高
 3 list($b_w,$b_h)=getimagesize($filename);
 4 //获取水印的宽高
 5 list($w_w,$w_h)=getimagesize($water);
 6 //水印在背景图的随机位置
 7 $posx=rand(0,($b_w-$w_w));
 8 $posy=rand(0,($b_h-$w_h));
 9 //创建背景和水印资源
10 $back=imagecreatefromjpeg($filename);
11 $water=imagecreatefrompng($water);
12 //添加水印
13 imagecopy($back,$water,$posx,$posy,0,0,$w_w,$w_h);
14 //保存水印图
15 imagejpeg($back,$filename);
16 //释放资源
17 imagedestroy($water);
18 imagedestroy($back);
19 }

 


5.图片旋转
自定义旋转函数:

1 function rotate($filename,$degrees){
2 //创建图像资源
3 $im=imagecreatefromjpeg($filename);
4 //按指定角度旋转
5 $rotate=imagerotate($im,$degrees,0);
6 //保存旋转后图
7 imagejpeg($im,$filename);
8 }

 






以上是关于GD库的主要内容,如果未能解决你的问题,请参考以下文章

CentOS 开启GD库

Linux 安装GD库

GD库镜像创建问题

gd 库创建的图像上未显示文本

使用 codeigniter 进行图像裁剪,没有 GD 库 - 安装了 GD2

GD库