d=====( ̄▽ ̄*)b

引语

php不仅仅局限于html的输出,还可以创建和操作各种各样的图像文件,如GIF、PNG、JPEG、WBMP、XBM等。

php还可以将图像流直接显示在浏览器中。

要处理图像,就要用到php的GD库。

ps:确保php.ini文件中可以加载GD库。可以在php.ini文件中找到“;extension=php_gd2.dll”,将选项前的分号删除,保存,再重启Apache服务器即可。

步骤

在php中创建一个图像一般需要四个步骤:

1.创建一个背景图像,以后的所有操作都是基于此背景。

2.在图像上绘图等操作。

3.输出最终图像。

4.销毁内存中的图像资源。

1.创建背景图像

下面的函数可以返回一个图像标识符,代表了一个宽为x_size像素、高为y_size像素的背景,默认为黑色。

resource imagecreatetruecolor(int x_size , int y_size)

在图像上绘图需要两个步骤:首先需要选择颜色。通过imagecolorallocate()函数创建颜色对象。

int imagecolorallocate(resource image, int red, int green, int blue)

然后将颜色绘制到图像上。

bool imagefill(resource image, int x, int y, int color)

imagefill()函数会在image图像的坐标(x,y)处用color颜色进行填充。

2.在图像上绘图

bool iamgeline(resource image, int begin_x, int begin_y, int end_x, int end_y, int color)

imageline()函数用color颜色在图像image中画出一条从(begin_x,begin_y)到(end_x,end_y)的线段。

bool imagestring(resource image, int font, int begin_x, int begin_y, string s, int color )

imagestring()函数用color颜色将字符串s画到图像image的(begin_x,begin_y)处(这是字符串的左上角坐标)。如果font等于1,2,3,4或5,则使用内置字体,同时数字代表字体的粗细。

如果font字体不是内置的,则需要导入字体库后使用。

3.输出最终图像

创建图像以后就可以输出图形或者保存到文件中了,如果需要输出到浏览器中需要使用header()函数发送一个图形的报头“欺骗”浏览器,使它认为运行的php页面是一个图像。

header("Content-type: image/png");

发送数据报头以后,利用imagepng()函数输出图形。后面的filename可选,代表生成的图像文件的保存名称。

bool image(resource image [, string filename])

4.销毁相关的内存资源

最后需要销毁图像占用的内存资源。

bool imagedestroy(resource image)

例子:

 <?php
$width=300; //图像宽度
$height=200; //图像高度
$img=imagecreatetruecolor($width,$height); //创建图像
$white=imagecolorallocate($img,255,255,255); //白色
$black=imagecolorallocate($img,0,0,0); //黑色
$red=imagecolorallocate($img,255,0,0); //红色
$green=imagecolorallocate($img,0,255,0); //绿色
$blue=imagecolorallocate($img,0,0,255); //蓝色
imagefill($img,0,0,$white); //将背景设置为白色
imageline($img,20,20,260,150,$red); //画出一条红色的线
imagestring($img,5,50,50,"hello,world!!",$blue); //显示蓝色的文字
header("content-type: image/png"); //输出图像的MIME类型
imagepng($img); //输出一个PNG图像数据
imagedestroy($img); //清空内存

效果:

PHP图形图像处理之初识GD库的更多相关文章

  1. 初识gd库

    必备基础 开启GD拓展 列表使用 获取图片信息代码 图片详细信息 特效函数 示例 运行结果 分析 获取图片基本信息 获取图片宽度 获取图片高度 获取图片后缀名 获取图片mime类型 操作图片 添加文字 ...

  2. php图形图像处理技术

    图形图像处理技术,gd库的强大支持,PHP的图像可以是PHP的强项,PHP图形化类库,jpgraph是一款非常好用的强大的图形处理工具. 在PHP中加载GD库 gd官方网址下载: http://www ...

  3. php中GD库的简单使用

    在php中需要图像处理的地方GD库会发挥重要的作用,php可以创建并处理包括GIF,PNG,JPEG,WBMP以及XPM在内的多种图像格式,简单的举几个例子: 1.用GD库会创建一块空白图片,然后绘制 ...

  4. PHP5 GD库生成图形验证码(汉字)

    PHP5 GD库生成图形验证码且带有汉字的实例分享. 1,利用GD库函数生成图片,并在图片上写指定字符imagecreatetruecolor 新建一个真彩色图像imagecolorallocate ...

  5. GD库处理图像

    在PHP5中,动态图象的处理要比以前容易得多.PHP5在php.ini文件中包含了GD扩展包,只需去掉GD扩展包的相应注释就可以正常使用了.PHP5包含的GD库正是升级的GD2库,其中包含支持真彩图像 ...

  6. 烂泥:centos单独编译安装gd库

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 这几天一直在弄一个商城系统,该系统的源码及数据库都已经上传并创建完毕.但是在安装该系统时,却提示缺少gd库.如下: 使用php探针查看,发现php确实没 ...

  7. 【CentOS】php编译安装gd库

    一.准备工作 使用之前服务器按源码最小化安装完nginx.php-fpm,没有安装gd库,下面介绍下gd库的安装. gd库是一个开源的图像处理库,它通过提供一系列用来处理图片的API,使其可以用来创建 ...

  8. php 安装扩展插件实例-gd库

    今天给php 安装一个扩展插件 gd库   一.gd库是什么 gd库是一个开源的图像处理库,它通过提供一系列用来处理图片的API,使其可以用来创建图表.图形.缩略图以及其他图像的处理操作. gd库支持 ...

  9. PHP的GD库

    GD库 PHP通过GD库,可以对JPG.PNG.GIF.SWF等图片进行处理.GD库常用在图片加水印,验证码生成等方面. 绘制线条 要对图形进行操作,首先要新建一个画布,通过imagecreatetr ...

随机推荐

  1. Spring事务:传播行为与隔离级别

    文章主要来源:https://github.com/dengdaiyemanren/onetopiconeday/wiki/spring%E4%BA%8B%E5%8A%A1%E9%85%8D%E7%B ...

  2. Data Mover Script Templates

    Datamover is probably the best way to export and import data between PeopleSoft databases and the sc ...

  3. PHP-PCRE正则表达式函数

    PCRE正则表达式函数 PCRE字符类 \\b        词边界 \\d        匹配任意数字 \\s        匹配任意空白,如TAB制表符或空格 \\t        匹配一个TAB ...

  4. 仿酒仙网的一款jQuery侧栏弹出导航栏特效

    仿酒仙网的一款jQuery侧栏弹出导航栏特效 一款常用于商城左侧商品导航的jquery菜单导航特效. 非常不错的一款商品分类特效.大家可以拿去研究研究 . 注意:该特效还支持挨千刀的IE6啊,之强大. ...

  5. WordPress 主题开发 - (四) 创建WordPress的主题HTML结构 待翻译

    Now we're starting to get into the real meat of WordPress Theme development: coding the HTML structu ...

  6. CentOS7.0安装JDK1.8.0_31

    1.检查一下系统中的jdk版本 $>java -version java version "1.7.0_"OpenJDK Runtime Environment (IcedT ...

  7. Eclipse编码问题

    通常在Eclipse下,mac和windows编码是不一样的.如果含有中文java sources通常会出现乱码. 解决---小程序! import java.io.File; import java ...

  8. System.Transaction (TransactionScope) 与 可提升 (Promotable) 交易

    这是我的备份,原文请看  http://www.dotblogs.com.tw/mis2000lab/archive/2014/11/12/transactionscope_promotable_tr ...

  9. opensuse 安装 Anaconda3 之后出现Could not start d-bus. Can you call qdbus?

    最近在安装了opensue Leap42.1之后,想要学习一下python,就安装了Anaconda3,并且将Anaconda3的安装路径添加到了PATH里,但是在重新启动系统后,出现了"C ...

  10. EmguCV学习——简单使用

    关于EmguCV我就不多说了,是对应于OpenCV的一套net库. 公司是视觉方面的业务,我又不会c++(好想会啊,正在学习中).由于各种需求,自己觉得对c++不是特别感冒,所以选用了net下的ope ...