GD库处理图像
在PHP5中,动态图象的处理要比以前容易得多。PHP5在php.ini文件中包含了GD扩展包,只需去掉GD扩展包的相应注释就可以正常使用了。PHP5包含的GD库正是升级的GD2库,其中包含支持真彩图像处理的一些有用的JPG功能。
一般生成的图形,通过PHP的文档格式存放,但可以通过HTML的图片插入方式SRC来直接获取动态图形。比如,验证码、水印、微缩图等。
一.创建图像
创建图像的一般流程:
1).设定标头,告诉浏览器你要生成的MIME类型。
2).创建一个图像区域,以后的操作都将基于此图像区域。
3).在空白图像区域绘制填充背景。
4).在背景上绘制图形轮廓输入文本。
5).输出最终图形。
6).清除所有资源。
7).其他页面调用图像。
//1 设定标头
//header("Content-type:text/html;charset=utf-8"); //不写就是默认,默认的是html文档
header("Content-type:image/png;"); //2 创建一个图形区域,图像背景
//两种方式
$im = imagecreatetruecolor(200, 200); //返回的是资源句柄 //3 在空白图像区域绘制填充背景
//填充颜色换掉,首相要有个颜色填充器
$blue = imagecolorallocate($im, 0, 102, 255);
//将颜色填充到背景上去,imagefill();
imagefill($im, 0, 0, $blue); //4 在背景上绘制图形轮廓输入文本
$white = imagecolorallocate($im, 255, 255, 255);
//画一条线imageline();
imageline($im, 0, 0, 200, 200, $white);
imageline($im, 0, 200, 200, 0, $white);
//绘制文本imagestring();二号字体,x y位置,文本,颜色
imagestring($im, 5, 70, 20, 'Mr.dang', $white); //5 输出最终图形
imagepng($im); //输出png格式图片 //6 清空资源
imagedestroy($im);
7).其他页面调用图像:只需要在另一个php文件调用即可,输出img标签,src写上边创建的图像的文件地址
//demo2.php
echo '<img src="demo.php" alt="图形" title="图形" />';
二.简单小案例
1 验证码
/*简单验证码案例 */ //1 获取四位数字字母混编
//mt_rand();获取随机数
//dechex();十进制转换为十六进制
for($i=0;$i<4;++$i){
$nmsg .= dechex(mt_rand(0, 15));
} //2 将上边的变成图片
header('Content-type:image/png');
$im = imagecreatetruecolor(75, 25);
$blue = imagecolorallocate($im, 0, 102, 255);
$white = imagecolorallocate($im, 255,255,255);
imagefill($im, 0, 0, $blue);
imagestring($im, 5, 20, 5, $nmsg, $white);
imagepng($im);
imagedestroy($im);
2 加载已有图像:这个图像事先防止于和php文件同一目录下,可以用相对或绝对地址调用,建议用绝对因为更快,我们的示例中用的是绝对,用魔法常量赖实现的
/*加载已有图像 */
// //
// define('URL', dirname(__FILE__).'\\');
// header('Content-type:image/png');
// $im = imagecreatefrompng(URL.'2.png');
// $white = imagecolorallocate($im, 255, 255, 255);
// imagestring($im, 5, 10, 10, 'http://www.dang.com', $white);
// imagepng($im);
// imagedestroy($im);
3 采用本机系统中的字体
/*采用系统提供字体 */
// $font = 'C:\Windows\Fonts\msyh.ttc'; //把路径传进去即可
// define('URL', dirname(__FILE__).'\\'); // header('Content-type:image/png');
// $im = imagecreatefrompng(URL.'2.png');
// $white = imagecolorallocate($im, 255, 255, 1);
// imagettftext($im,40,10,50,100,$white,$font,'hello,党兴明'); //第一个数字字体大小,第二个旋转角度
// imagepng($im);
// imagedestroy($im);
4 微缩图
/*微缩图问题 */
define('URL', dirname(__FILE__).'\\');
header('Content-type:image/png');
//1 取得图像大小
list($width,$height) = (getimagesize(URL.'2.png')); //返回的是数组,里边包含尺寸
//2 将原图的宽高缩小百分比
$_width = $width*0.4;
$_height = $height*0.4; //3 创建一个新图
$im = imagecreatetruecolor($_width, $_height); //4 载入原图,将原图复制到新图上去
//载入
$_im = imagecreatefrompng(URL.'2.png');
//将原图重新采样,拷贝到新图上,最后按0.4的比例输出
//imagecopyresampled();重新采样拷贝图片并调整大小
imagecopyresampled($im, $_im, 0, 0, 0, 0, $_width, $_height, $width, $height); //5 输出销毁
imagepng($im);
imagedestroy($im);
imagedestroy($_im);
注意:以上示例中都用的png格式的图片,可以用其他格式的(只要把函数中的png替换就好)。但jpg在函数中要写jpeg,bmp要写wbmp。
GD库处理图像的更多相关文章
- PHP->利用GD库新建图像
1.确认php中GD库是否开启 在PHP配置文件php.ini中查找extension=php_gd2.dll,去掉前边的(分号) ';' 即可,一般php是默认开启的 2.绘画步骤 创建一个画布(画 ...
- PHP 使用GD 库绘制图像,无法显示的问题
根据官方GD 库绘制图像文档样式 原基本样式 $width = 120; $height = 50; $img = @imagecreatetruecolor($width, $height) or ...
- 【PHP】使用GD库实现 图像生成、缩放、logo水印和简单验证码
gd库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片.验证码.水印.缩略图等等.要使用gd库首先需要开启gd库扩展, windows系统下需要在php.ini中将ex ...
- php GD库简单使用和封装
GD库创建图像步骤 <?php //1.创建画布 $width = 300; $height= 200; $image=imagecreatetruecolor($width,$height); ...
- 自动检测GD库支持的图像类型
以下代码通过自动检测GD库支持的图像类型 来写出移直性更好的PHP代码 <?php if(function_exists("imagegif")){ header(" ...
- GD库的基本信息,图像的旋转、水印、缩略图、验证码,以及图像类的封装
GD库检测 <?php phpinfo(); ?> GD库安装• Windows 使用phpstudy • Linux 编译安装 –with-gd• Linux 编译安装扩展 GD库支持的 ...
- PHP的GD库
GD库 PHP通过GD库,可以对JPG.PNG.GIF.SWF等图片进行处理.GD库常用在图片加水印,验证码生成等方面. 绘制线条 要对图形进行操作,首先要新建一个画布,通过imagecreatetr ...
- gd库
1.开启GD库扩展 去掉注释: extension=php_gd2.dll extension_dir='ext目录所在位置' 2.检测GD库是否开启 phpinfo(); //检测扩展是够开启 ex ...
- 烂泥:centos单独编译安装gd库
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 这几天一直在弄一个商城系统,该系统的源码及数据库都已经上传并创建完毕.但是在安装该系统时,却提示缺少gd库.如下: 使用php探针查看,发现php确实没 ...
随机推荐
- 【好玩的前端知识】 Kube
Kube javascript tools
- 【Alpha】十天屠龙记
团队名字: 一不小心就火了 屠龙天团少年们: 031402504 陈逸超 (组长) 031402505 陈少铭 031402511 黄家俊 031402515 翁祖航 031402516 黄瑞钰 03 ...
- JavaScript零基础学习系列二
条件控制 if(条件){//语句块}如果条件(小括号里面的)满足true.那么才会执行大括号里面的代码,如果条件不满足(false),那么不执行,注意:有可能代码不会执行. 例如: if(3>1 ...
- Dedecms去掉URL中a目录的方法
本文实例讲述了Dedecms去掉URL中a目录的方法.分享给大家,供大家参考.具体分析如下: 使用dedecms的朋友可能会发现自己的URL目录生成是会自动带有一个/A/目录了,那么要如何去掉URL中 ...
- Sphinx在windows上的安装使用
Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索, 它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索. Sphinx特别为一 ...
- C++链表
之前用C写链表的时候,结点使用结构体封装的,操作起来总是感觉很麻烦.C++中使用类来封装结点,感觉操作起来方便多了,内存回收也感觉很清楚. 最近,做Gps数据分析时,别人要求加一个树形控件. Gps数 ...
- [HAOI2009]求回文串
神奇到爆炸的贪心,策略很简单.但是实现上好像比较恶心.换了一种思路.先保存所有点应该转移到的位置,BIT搞个逆序对就好了. 如何找到每个点应该转移到的位置?这个处理方式也是比较玄学.看代码吧. //O ...
- 【转】精选30个优秀的CSS技术和实例
今天,我为大家收集精选了30个使用纯CSS完成的强大实践的优秀CSS技术和实例,您将在这里发现很多与众不同的技术,比如:图片集.阴影效果.可扩展按钮.菜单等-这些实例都是使用纯CSS和HTML实现的. ...
- TCP/IP——链路层
链路层主要有三个目的: (1)为IP模块发送和接收IP数据报; (2)为ARP模块发送 ARP请求和接收 ARP应答; (3)为RARP发送RARP请求和接收RARP应答. TCP / IP支持多种不 ...
- lodop打印控件
http://www.c-lodop.com/demolist/PrintSampIndex.html