GD库笔记

^.GD简介
PHP 不仅限于只产生 HTML 的输出,还可以创建及操作多种不同格式的图像文件。
PHP提供了一些内置的图像信息函数,也可以使用GD函数库创建新图像或处理已有的图像。
目前GD2库支持GIF、JPEG、PNG和WBMP等格式。此外还支持一些FreeType、Type1等字体库。
JPEG 是一种压缩标准的名字,通常是用来存储照片或者存储具有丰富色彩和色彩层次的图像。这种格式使用了有损压缩。
PNG 是可移植的网络图像,对图像采用了无损压缩标准。
GIF 原义是“图像互换格式”,是一种基于LZW算法的连续色调的无损压缩格式 。
使用前,先检查是否开启GD库这个模块
phpinfo();
没有GD库,去PHP.INI中查找
extension=php_gd2.dll

^.使用gd基础
画布管理
imagecreate() 创建基于调色板的画布
imagecreatetruecolor() 创建基于真彩的画布
imagedestroy() 销毁图像的资源

设置颜色
imagecolorallocate() 为图像分配颜色

生成图像 把图像输出到浏览器上或者图像另存为
header("Content-type:image/jpeg")
imagegif() 把图像输出或另存为gif格式
imagepng()  把图像输出或另存为png格式
imagejpeg() 把图像输出或另存为jpeg格式
如果两个参数 就是另存
如果一个参数 就是输出

^.4个步骤
//1.创建画布
$img = imagecreatetruecolor(300,300);

//2.绘制图像
//分配颜色
$blue = imagecolorallocate($img,0,0,255);
$red = imagecolorallocate($img,255,0,0);

//3.输出图像
header(‘content-type:image/jpg‘);
imagejpeg($img); //不另存为
imagejpeg($img,‘./image/‘.time().‘.jpg‘); //另存为

//4.销毁资源
imagedestroy($img);

^.绘制图像
// 填充颜色
imagefill($img,0,0,$blue);

// 画线
for($i=0; $i<10; $i++) {
imageline($img, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $white);
}

// 画像素点
for($i=0; $i<1000; $i++){
// 随机绘制像素点
imagesetpixel($img,mt_rand(0,400),mt_rand(0,400),$white);
}

// 矩形
imagerectangle();
imagefilledrectangle($img, 150, 150, 250, 250, $white);

// 多边形
$gon = array(
$width / 2, 0,
$width , $height /2 ,
$width / 2, $height,
0,$height / 2,
$width / 2, 0);
imagepolygon($img,$gon,5,$white);
imagefilledpolygon($img,$gon,5,$white);

//画圆
imageellipse($img, 150, 75, 50, 50, $red);
imagefilledellipse($img, 150,150, 100, 100, $red);

//画弧线
imagearc($img,150,150, 100,100, 0,360,$red);
imagefilledarc($img,150,150, 100,100, 0,-30,$red,0);

//绘制文字
imagestring() //一串字符x轴
imagestringup() //一串字符y轴
imagechar() //一个字符x轴
imagecharup() //一个字符y轴

//资源, 字体大小, 角度, 坐标x, 坐标y, 颜色, 字体文件, 输出的字符串
imagettftext($img,30,-45, 80,150,$white,‘./MSYH.TTF‘,‘范德萨范德萨‘);

^.php图像处理(缩放、裁剪、水印、旋转和翻转)
基础
imagecreatefrompng($filename); //打开资源
imagecreatefromjpeg()
imagecreatefromgif()
getimagesize($filename); //获取图片信息,返回数组
imagesx($img); //图宽
imagesy($img); //图高

图片缩放和裁剪
imagecopyresampled() //拷贝部分图像并调整大小
imagecopyresized()

添加图片水印
imagecopy()
imagecopymerge()

图片旋转和翻转
imagerotate()

^.剪裁图像
//源文件
$filename = ‘./image/1.jpg‘;

//新图的宽高
$width = 300;
$height = 300;

//新图
$imgdes = imagecreatetruecolor($width, $height);

//裁剪图
$imgsrc = imagecreatefromjpeg($filename);

//进行裁剪
//新图, 剪裁对象, 新图x,新图y, 剪裁图x,裁剪图y,新图w,新图h,裁剪图w,裁剪图h
imagecopyresampled($imgdes, $imgsrc, 0, 0, 300, 100, $width, $height, $width, $height);

//输出
header(‘Content-type:image/jpeg‘);
imagejpeg($imgdes);

//销毁资源
imagedestroy($imgdes);
imagedestroy($imgsrc);

^.水印文字
//源文件
$filename = ‘./image/1.jpg‘;
$img = imagecreatefromjpeg($filename);

//字体颜色
$color = imagecolorallocate($img,255,255,0);

//加上文字
imagettftext($img, 30, 0, 250, 500, $color, ‘./STHUPO.TTF‘,‘梦中情人‘);

header(‘Content-Type:image/jpeg‘);
imagejpeg($img);

imagedestroy($img);

^.失真图片缩放
$filename = ‘./image/1.jpg‘;
$img = imagecreatefromjpeg($filename);
$width = 300;
$height = 300;
$bg = imagecreatetruecolor($width, $height);

//进行失真缩放
//画布, 美女图, 画布x,画布y,美女图x,美女图y,画布w,画布h,美女图w,美女图h
imagecopyresampled($bg,$img,0,0,0,0,$width,$height,imagesx($img),imagesy($img));

header(‘Content-Type:image/jpeg‘);
imagejpeg($bg);

imagedestroy($bg);
imagedestroy($img);

^.无透明水印图片
$filename = ‘./image/1.jpg‘;
$bgpic = imagecreatefromjpeg($filename);

//引入水印图片
$water = imagecreatefrompng(‘./image/logo.png‘);

//进行水印覆盖
//美女图,水印图,水印图x,水印图y,美女图x,美女图y,水印图w,水印图h
imagecopy($bgpic,$water,300,100,0,0,imagesx($water),imagesy($water));

header(‘Content-Type:image/jpeg‘);
imagejpeg($bgpic);
imagedestroy($bgpic);
imagedestroy($water);

^.透明水印
$filename = ‘./image/1.jpg‘;
$bgpic = imagecreatefromjpeg($filename);

//引入水印图片
$water = imagecreatefromjpeg(‘./image/taiji.jpg‘);

//进行透明水印覆盖
//美女图,水印图,水印图x,水印图y,美女图x,美女图y,水印图w,水印图h,透明度
imagecopymerge($bgpic,$water,200,400,0,0,imagesx($water),imagesy($water),50);

header(‘Content-Type:image/jpeg‘);
imagejpeg($bgpic);
imagedestroy($bgpic);
imagedestroy($water);

^.旋转图片
$filename = ‘./image/1.jpg‘;
$img = imagecreatefromjpeg($filename);

$color = imagecolorallocate($img,255,255,0);

//画布,角度,颜色
$img = imagerotate($img,-30,$color); //返回资源

header(‘Content-Type:image/jpeg‘);
imagejpeg($img);
imagedestroy($img);

^.等比例缩放
$filename = ‘./image/1.jpg‘;
$img = imagecreatefromjpeg($filename);

$width = imagesx($img);
$height = imagesy($img);
$size = 300;

if($width > $height){
$bw = $size;
$bh = ($height / $width) * $bw;
}else{
$bh = $size;
$bw = ($width / $height) * $bh;
}

$bg = imagecreatetruecolor($bw,$bh);

imagecopyresampled($bg,$img,0,0,0,0,$bw,$bh,$width,$height);

header(‘Content-Type:image/jpeg‘);
imagejpeg($bg);

imagedestroy($bg);
imagedestroy($img);

时间: 2024-07-30 20:34:19

GD库笔记的相关文章

Ubuntu下php使用GD库笔记

首先是查看GD库有没有被正确的安装和加载.通过gd_info()可以看,或者phpinfo.在phpinfo中可以看到gd一栏,然后版本如果是 bundled (2.0.34 compatible) 的话,是从php4.3之后开始绑定的.如果没有的话,可以用命令安装一个:sudo apt-get install php5-gd.或者为了安装完整版本的,在源列表中添加两行:deb http://packages.dotdeb.org stable alldeb-src http://package

PHP学习笔记-GD库与Jpgraph的使用

转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/52281196 本文出自:[顾林海的博客] 前言 学习PHP从第一篇笔记到现在这篇,已经十多篇了,每天花时间去学习是需要毅力的,好在自己对IT这行也是比较感兴趣,算是每天自娱自乐吧,下周一就去考科目三了,想想也是醉了,拖这么长时间. GD库 GD库是一个开放的动态创建图像.源代码公开的函数库,可以从官方网站http://www.boutell.com/gd处下载.目前,

php学习笔记--GD库使用

php学习笔记--GD库使用 php培训教程中gd图片创建流程: 1).设定标头,告诉浏览器你要生成的MIME 类型. 2).创建一个图像区域,以后的操作都将基于此图像区域. 3).在空白图像区域绘制填充背景. 4).在背景上绘制图形轮廓输入文本. 5).输出最终图形. 6).清除所有资源. 7).其他页面调用图像. 合肥开源IT教育教学实例代码: header('Content-Type: image/png');  //设定标头指定MIME 输出类型 $im = imagecreate(20

PHP学习笔记-----GD库

PHP中GD库的使用 最新的GD库版本支持GIF.JPEG.PNG.WBMP.XBM等格式的图像文件. 创建图像应该完成如下所示的4个步骤. (1)      创建画布 (2)      绘制图像 (3)      输出图像 (4)      释放资源 画布管理 imagecreate()//新建一个基于调色板的图像 imagecreatetruecolor()//新建一个真彩***像 设置颜色 imagecolorallocate()//为一副图像分配颜色 生成图像 imagegif() im

php学习笔记:利用gd库生成图片,并实现随机验证码

说明:一些基本的代码我都进行了注释,这里实现的验证码位数.需要用的字符串都可以再设置.有我的注释,大家应该很容易能看得懂. 基本思路: 1.用mt_rand()随机生成数字确定需要获取的字符串,对字符串进行拼接(觉得生成的验证码觉得有点太挤,大家可以再字符串中间拼接个空格键),实现随机验证码: 备注:建议大家用mt_rand(),而不是rand(),前者效率更高 2.利用gd库生成图片,把随机字符串写到图片输出. 效果: 每次刷新,都生成一个随机验证,后期我可能还会补充怎么实现随机码点击图片就再

php笔记之GD库图片创建/简单验证码

燕十八 公益PHP培训 课堂地址:YY频道88354001 学习社区:www.zixue.it php画图:比如说验证码,缩略图,加水印都要用到GD库,所以要开启gd2库,才能用 首先找到php.ini中extension=php_gd2.dll  去掉前边的分号,然后重启apache,创建图片就可以用了 /* 画图的一般步骤: 1.创建画布 2.创建颜料 3.画图或者写字 4.保存 5.销毁资源 */ //创建画布 $img=imagecreatetruecolor(300,200); //创

PHP利用GD库画图和生成验证码图片

首先得确定php.ini设置有没有打开GD扩展功能,测试如下 print_r(gd_info()); 如果有打印出内容如下,则说明GD功能有打开: Array ( [GD Version] => bundled (2.0.34 compatible) [FreeType Support] => 1 [FreeType Linkage] => with freetype [T1Lib Support] => 1 [GIF Read Support] => 1 [GIF Crea

安装GD库解决ThinkPHP 验证码Call to undefined function Think\imagecreate()出错

在php中imagecreate函数是一个图形处理函数,主要用于新建一个基于调色板的图像了,然后在这个基础上我们可以创建一些图形数字字符之类的,但这个函数需要GD库支持,如果没有开启GD库使用时会提示Call to undefined function imagecreate()错误. 例,我在测试一个简单生成图形时实例 Example #1 新建一个新的 GD 图像流并输出图像  代码如下 复制代码 <?php header("Content-type: image/png")

php GD库

php 中之前比较常使用的是GD库来画图像,这个使用得比较多的是验证码的使用.首先GD库画图必须要有的一些步骤: 首先,创建画布,其次,绘制图片轮廓和画本,再次是输出图型,最后是释放资源. 创建方法如下: imagecreatetruecolor(int width,int height); 填充颜色: $color=imagecolorallocate($resouces,int a,int g,int b); 颜色填充: imagefill($resouces,int start,int s