GD库简介和使用
2016-03-15 21:26
260 查看
简介
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扩展库。
格式 支持读取 支持写入 备注 |
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+ |
需求
如果你有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); ?>
相关文章推荐
- hdu 1051 Wooden Sticks
- pku1050 To the Max DP
- 快慢指针判断单链表中是否存在环,存在返回环的起点的值
- 160315、mybatis批量删除
- python学习4 常用内置模块
- w3m - 命令行下的浏览器
- Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!
- Ubuntu 将本地文件源制作成ISO文件
- UI基本控件
- Bootstrap 2.3版与3.0版的使用区别
- Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!
- android 路径地址与Uri的相互转换 uri转string
- 结合MapReduce和数据集Combining datasets with MapReduce
- C语言中的变量
- EL表达式(胖先生版)
- java Image大小处理
- 二叉树系列——二叉树的最大距离(即相距最远的两个叶子节点,编程之美,百度面试题)
- 前端学习笔记(六)
- makefile中重载与取消隐藏规则示例
- FZU 2101 大三的美好时光