简介

php并不仅限于创建html输出,它也可以创建和处理包括GIF,PNG,jpef,wbmp以及xpm在内的多种格式的图像。更加方便的是,php可以直接将图像数据库输出到浏览器。要想在php中使用图像处理功能,你需要连带gd库一起来编译php。gd库和php可能需要其他的库,这取决于你要处理的图像格式。

你可以使用PHP中的图像函数来获取下列格式图像的大小:jpeg,gif,png,swf,tiff和jpeg2000.

如果联合exif扩展一起使用,你可以操作存储在jprg和tiff图像文件头部的信息,这样就可以获取数码相机所产生的元数据。exif相关的函数不需要gd库亦可使用。

getimagesize()函数不需要gd扩展库。

  </td>
格式 支持读取 支持写入 备注
JPEG TRUE TRUE GD 1.8+
PNG TRUE TRUE
GIF TRUE TRUE GD 1.6 和 GD 2.0.28 之间的版本不支持
XBM TRUE TRUE PHP 4.0.1 开始支持读取,PHP 5.0.0 开始支持写入
XPM TRUE FALSE PHP 4.0.1 开始支持读取。Windows 平台上不可用。需要 PHP 绑定的 GD 库
WBMP TRUE TRUE GD 1.8+
WebP TRUE TRUE GD 2.1+, PHP 5.5+
  </td>

很遗憾的是,虽然上表中显示大部分图像格式都是支持读取和写入的,但是代表你的PHP环境在编译的时候是支持这些操作的。要想检测gd库所支持的格式,请使用gd_info()函数。

需求

如果你有gd库(可从http://www.libgd.org获得),你就可以创建和处理图像。

可以处理的图像格式由你所使用的gd库版本以及gd库可能需要的其他库决定。GD-1.6之前的版本呢支持gif格式,但是不支持png格式。gd1.6以上,gd2.0.28以下的版本支持Png,但是不支持gif格式。在gd2.0.28中,又重新启用了对于gif格式的支持。

Note: 从 PHP 4.3 开始就绑定了 GD 库。 这个版本的库中还提供了一些额外增加的功能,例如透明混> > 合处理。 这个版本的代码被很好的维护着,并且运行稳定, 所以建议优先选择绑定版本。

安装

在windows中,需要将gd2的dll文件php_gd2.dll作为一个扩展包含在php.ini中。gd1的dll文件php_gd.dll在php4.3.2中被删除了。此外要注意首选的真彩色图像函数,例如imagecreatetruecolor(),需要gd2.

Note

要在windows下启用exif,在php.ini中php_mbstring.dll必须在php_exif.dll之前加载。

预定义常量

GD_VERSION(); PHP编译所依据的GD版本。

GD_MAJOR_VERSION(); PHP编译所依据的大版本。

GD_MINOR_VERSION(); PHP编译所依据的gd小版本。

GD_RELEASE_VERSION(); PHP编译所依赖的GD发布版本。

GD_EXTRA_VERSION (string) PHP 编译所依据的 GD 扩展版本(beta/rc..)。 (PHP 5.2.4 可用) GD_BUNDLED (integer) 当使用绑定版本的 GD 时,此值为 1, 反之为 0。

...

Example 1

<?php

header("Content-type: image/png");
$string = $_GET['text'];
$im = imagecreatefrompng("images/button1.png");
$orange = imagecolorallocate($im, 220, 210, 60);
$px = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 9, $string, $orange);
imagepng($im);
imagedestroy($im); ?>

Example 2

使用Alpha为图片添加水印


<?php
// 加载水印以及要加水印的图像
$stamp = imagecreatefrompng('stamp.png');
$im = imagecreatefromjpeg('photo.jpeg'); // 设置水印图像的外边距,并且获取水印图像的尺寸
$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp); // 利用图像的宽度和水印的外边距计算位置,并且将水印复制到图像上 imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp)); // 输出图像并释放内存
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>

Example 3

使用imagecopymerge()函数创建半透明水印

<?php
// 加载要加水印的图像
$im = imagecreatefromjpeg('photo.jpeg'); // 首先我们从 GD 手动创建水印图像
$stamp = imagecreatetruecolor(100, 70);
imagefilledrectangle($stamp, 0, 0, 99, 69, 0x0000FF);
imagefilledrectangle($stamp, 9, 9, 90, 60, 0xFFFFFF);
$im = imagecreatefromjpeg('photo.jpeg');
imagestring($stamp, 5, 20, 20, 'libGD', 0x0000FF);
imagestring($stamp, 3, 20, 40, '(c) 2007-9', 0x0000FF); // 设置水印图像的位置和大小
$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp); // 以 50% 的透明度合并水印和图像
imagecopymerge($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp), 50); // 将图像保存到文件,并释放内存
imagepng($im, 'photo_stamp.png');
imagedestroy($im); ?>

GD库简介和使用的更多相关文章

  1. gd库的安装

    gd库简介 主要用途编辑 在网站上GD库通常用来生成缩略图,或者用来对图片加水印,或者用来生成汉字验证码,或者对网站数据生成报表等.在PHP处理图像,可使用GD库,而GD库开始时是支持GIF的,但由于 ...

  2. 【PHP】解析PHP的GD库

    官方文档:http://php.net/manual/en/book.image.php 1.GD库简介 PHP可以创建和操作多种不同格式的图像文件.PHP提供了一些内置的图像信息函数,也可以使用GD ...

  3. PHP的GD库

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

  4. gd库

    1.开启GD库扩展 去掉注释: extension=php_gd2.dll extension_dir='ext目录所在位置' 2.检测GD库是否开启 phpinfo(); //检测扩展是够开启 ex ...

  5. 已安装php 编译安装 gd库拓展模块

    参考资料:http://wenku.baidu.com/link?url=EgXFShYxeJOZSYNQ_7RCBC-6X8OcRRCqVm4qCv49uBk57d6vLBoUpfYdQ-KqJRs ...

  6. Mac php使用gd库出错 Call to undefined function imagettftext()

    第一次在Mac下使用ThinkPHP,用到验证码功能时报如题的错误: Call to undefined function Think\imagettftext() 然后检查自己的GD库,发现安装上了 ...

  7. BerkeleyDB库简介

    BerkeleyDB库简介 BerkeleyDB(简称为BDB)是一种以key-value为结构的嵌入式数据库引擎: 嵌入式:bdb提供了一系列应用程序接口(API),调用这些接口很简单,应用程序和b ...

  8. GD库处理图像

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

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

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

随机推荐

  1. JPA 简单实体映射和EntityManagerAPI

    [常用注解] 使用JPA 指定映射关系时,有两种方式,一种是使用xml 方式,另一种是注解方式,笔者推荐使用注解方式.在JPA 映射简单实体时,常用的注解如下: @Entity:修饰实体类对象,表示该 ...

  2. hdu1114 dp(完全背包)

    题意:已知空钱罐质量和满钱罐质量(也就是知道钱罐里的钱的质量),知道若干种钱币每种的质量以及其价值,钱币都是无限个,问最少钱罐中有多少钱. 这个题在集训的时候学长给我们做过,所以你会做是应该的,由于已 ...

  3. Cassandra 数据库, python cqlsh命令

    ★  cql操作数据库(cqlsh.bat: python cqlsh命令操作<优缺点:https://blog.csdn.net/vbirdbest/article/details/77662 ...

  4. LG2375 [NOI2014]动物园

    题意 给定一个长为\(L\)的字符串(\(L \leq 1e6\)) 求一个\(num\)数组,\(num[i]\)表示长度为\(i\)的前缀中字符串\(S'\)的数量,其中\(S'\)既是该前缀的前 ...

  5. 1920*1080分辨率和1080p,1080i的关系

    1080i和1080p是由美国电影电视工程师协会确定的高清标准格式,其中1080p被称为目前数字电视的顶级显示格式,这种格式的电视在逐行扫描下能够达到1920×1080的分辨率.受限制于存储介质(一部 ...

  6. 在oracle的连接(join)中使用using关键字

    如果是使用natraul join,并且两张表中如果有多个字段是具有相同的名称和数据类型的,那么这些字段都将被oracle自作主张的将他们连接起来. 但实际上我们有时候是不需要这样来连接的.我们只需要 ...

  7. BMP、GIF、JPEG、PNG以及其它图片格式简单介绍

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/songjinshi/article/details/37516649 BMP格式 BMP是英文Bit ...

  8. 【转】每天一个linux命令(60):scp命令

    原文网址:http://www.cnblogs.com/peida/archive/2013/03/15/2960802.html scp是secure copy的简写,用于在Linux下进行远程拷贝 ...

  9. BaseAction编写:免去一些重复的代码,比如继承ActionSupport和实现ModelDriven接口

    1.BaseAction package com.learning.crm.base; import java.lang.reflect.ParameterizedType; import java. ...

  10. 重置SQL Server sa密码

    查询分析器,连接时,身份验证使用"使用windows身份验证" 然后,执行: EXEC sp_password NULL, '新密码', 'Sa'