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确实没 ...
随机推荐
- BeautifulSoup 的用法
转自:http://cuiqingcai.com/1319.html Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python ...
- MongoDB基础知识
一.Mongodb简介 Mongodb是基于分布式文件存储的数据库,用C++编写: Mongodb是nosql(not-only-sql)数据库: Mongodb '无状态模式',不用去设计,直接用, ...
- Python学习之day2
1.执行Python脚本时打印的字符有颜色 print "\033[32;1mhello\033[0m" #打印绿色 print "\033[31;1mhello\033 ...
- 【BZOJ 2541】【Vijos 1366】【CTSC 2000】冰原探险
http://www.lydsy.com/JudgeOnline/problem.php?id=2541 https://vijos.org/p/1366 loli秘制大爆搜_(:з」∠)_坑了好久啊 ...
- shell中$0,$?,$!等的特殊用法
变量说明: $$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表 ...
- Hibernate JPA实体继承的映射(一) 概述
http://www.cnblogs.com/yingsong/p/5179975.html 注:文章中据说的实体指的是被@Entity注解的类. JPA中对象关系映射通常情况下是一个实体对应一个 ...
- python取mysql数据写入excel
环境:MySQLdb openpyxl模块 python去zabbix的mysql数据库中取交换机不同时间段的进出口流量,然后写入excel中,每天cron执行,每周四邮件发送.(代码中第一行必须加上 ...
- Google 地图 API V3 针对移动设备进行开发
Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...
- 20145204&20145212信息安全系统实验三报告
实时系统的移植 实验目的与要求 1.根据实验指导书进行实时软件的安装 2.配置实验环境,并对软件进行测试. 3.正确使用连接线等仪器,注意保护试验箱. 实验内容与步骤 1.连接 arm 开发板 连接实 ...
- Java数据结构——带权图
带权图的最小生成树--Prim算法和Kruskal算法 带权图的最短路径算法--Dijkstra算法 package graph; // path.java // demonstrates short ...