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确实没 ...
随机推荐
- js base64加密,后台解密
这是为了解决页面发送post请求,传输密码,在页面的控制台可以看到密码的明文,所以先用base64把要传输的密码转换为非明文,然后在后台解密处理. base64encode.js // base64加 ...
- Unable to load R3 module D:\Program Files\Oracle\VirtualBox/VBoxDD.DLL (VBoxDD): GetLastError=1790 (VERR_UNRESOLVED_ERROR).
Unable to load R3 module D:\Program Files\Oracle\VirtualBox/VBoxDD.DLL (VBoxDD): GetLastError=1790 ( ...
- BZOJ3505 [Cqoi2014]数三角形
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
- 初识Jsoup之解析HTML
按照国际惯例,我首先应该介绍下Jsoup是个什么东西,然后在介绍下具体用法,然后在来个demo演示,其实我也是这么想的,小编今天花了一天的时间从学习—>解析页面,总算是成果圆满了吧,啊哈,但是, ...
- SSH--1
package com.etc.action; import java.io.IOException; import java.io.PrintWriter; import java.util.Has ...
- Html中行内样式的设置
Html中行内样式的设置.. <html> <head> <title>显示的页面选项卡标题</title> <style type=" ...
- 6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
引言 本篇文章主要介绍.NET中6个重要的概念:栈,堆,值类型,引用类型,装箱,拆箱.文章开始介绍当你声明一个变量时,编译器内部发生了什么,然后介绍两个重要的概念:栈和堆:最后介绍值类型和引用类型,并 ...
- [NHibernate]HQL查询
目录 写在前面 文档与系列文章 查询的几种方式 HQL查询 一个例子 总结 写在前面 上篇文章介绍了nhibernate在项目中的基本配置,包括数据库连接字符串的设置,映射文件的配置及需注意的地方,这 ...
- 10 件有关 JavaScript 让人费解的事情
JavaScript 可算是世界上最流行的编程语言,它曾被 Web 开发设计师贴上噩梦的标签,虽然真正的噩梦其实是 DOM API,这个被大量的开发与设计师随手拈来增强他们的 Web 前端的脚本语言, ...
- codevs2645 Spore
题目描述 Description 某陈和某Y 最近对一个游戏着迷.那是Electronic Arts 今年发布的优秀的模拟经营类游戏,Spore. 在Spore 中,玩家将经历从单细胞生物到星系的统治 ...