PHP中GD库
PHP中GD库
一、GD库的介绍
1、GD库是什么?
Graphic Device,图像工具库,gd库是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。 在网站上 GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。
PHP 不仅限于只产生 HTML 的输出,还可以创建及操作多种不同格式的图像文件。PHP提供了一些内置的图像信息函数,也可以使用GD函数库创建新图像或处理已有的图像。目前GD2库支持GIF、JPEG、PNG和WBMP等格式。此外还支持一些FreeType(加载操作系统中的字体)、Type1等字体库。
2、引入和检测扩展
- a. 在windows下,
php.ini
里,去掉php_gd2.dll前的;
,引入gd2扩展 - b. 在Linux下,需要编译时加上gd支持:
extension = php_gd2.so
# 检测扩展是否开启
# phpinfo(); -》gd
var_dump(extension_loaded('gd'));
echo '<hr/>';
var_dump(gd_info());
echo '<hr/>';
var_dump(function_exists('imagecreatetruecolor'));
二、图片处理典型流程
imagetypes()获取当前PHP所支持图像类型
1、创建画布
//创建图片资源
$image = imagecreatetruecolor(500, 500);
2、准备颜料
red,green 和 blue 分别是所需要的颜色的红,绿,蓝成分。这些参数是 0 到 255 的整数或者十六进制的 0x00 到 0xFF
#$color = imagecolorallocate($image, $red, $green, $blue );
$background_color = imagecolorallocate($image, 255, 255, 255); //白色作为背景色
$back = imagecolorallocate($image, 255, 255, 255);
$border = imagecolorallocate($image, 0, 0, 0);
$red = imagecolorallocate($image, 255, 0, 0);
$green = imagecolorallocate($image, 0, 255, 0);
3、利用颜料在画布上写字或填充颜色
#imagefilledrectangle ( resource $图片资源 , int $点1x轴, int $点1y轴 , int $点2x轴 , int $点2y轴 , int $color )
- x坐标和y坐标组成一个点
- 另个点可以整成一个直线
- 直线如果不是水平或垂直的就可以组成一个矩形
imagefilledrectangle ( $image , 0, 0 , 500 , 500 , $background_color );
如果要填充整个画布的话: 点1 为x轴为画布的0位置,点1的y轴也为画布的0位置。 点2 为x轴为画布的500位置,点2的y轴也为画布的500位置。
4、画图像
- a、圆形(椭圆)
imagefilledellipse($img, 250, 250, 200, 200, $yellow);
//椭圆
imagefilledellipse($image, 200, 150, 300, 200, $yellow);
- b、画矩形
imagefilledrectangle($img, 200, 200, 300, 300, $blue);
5、保存图片
#仅显示出来看
//header('content-type:image/jpeg');
// imagejpeg($image);
imagegif($image,'./hello.gif'); //保存起来
6、销毁图片资源
imagedestroy($image);
三、GD常用的函数介绍
这里面的函数会用就好,不用都背
1、新建一个真彩色图像
resource imagecreatetruecolor ( int `$width` , int `$height` )
2、为一幅图像分配颜色.失败返回-1
int imagecolorallocate ( resource `$image` , int `$red` , int `$green` , int `$blue` )
3、为一幅图像分配颜色和透明度
- 透明度参数 alpha,其值从 0 到 127。0 表示完全不透明,127 表示-完全透明。
- 如果分配失败则返回 FALSE。
int imagecolorallocatealpha ( resource `$image` , int `$red` , int `$green` , int `$blue` , int `$alpha` )
4、画一条线
bool imageline ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )
imageline() 用 color
颜色在图像 image
中从坐标 x1
,y1
到 x2
,y2
(图像左上角为 0, 0)画一条线段
5、写字
imagechar($image, 5, 50, 50, 'J', $red);//水平地画一个字符
imagecharup($image, 5, 100, 100, 'A', $green); //垂直地画一个字符
imagestring($image, 5, 200, 200, 'Jack', $blue); // 水平地画一行字符串
// 中文用 TrueType 字体向图像写入文本
imagettftext($image, 18, 0, 20, 20, $red, './font/simkai.ttf', '来啊,流浪啊,反正有...');
6、画圆弧
imagearc() 以 cx
,cy
(图像左上角为 0, 0)为中心在 image
所代表的图像中画一个椭圆弧。w
和 h
分别指定了椭圆的宽度和高度,起始和结束点以 s
和 e
参数以角度指定。0°位于三点钟位置,以顺时针方向绘画。
$white = imagecolorallocate($img, 255, 255, 255);
// 画一个白色的圆
imagearc($img, 100, 100, 150, 150, 0, 360, $white);
//蓝色圆弧
imagearc($img, 150, 150, 150, 150, 45, 135, $blue;
7、画椭圆
在指定的坐标上画一个椭圆。
bool imageellipse ( resource `$image` , int `$cx` , int `$cy` , int `$width` , int `$height` , int `$color` )
8、画矩形
bool imagerectangle ( resource `$image` , int `$x1` , int `$y1` , int `$x2` , int `$y2` , int `$col` )
magerectangle() 用 col
颜色在 image
图像中画一个矩形,其左上角坐标为 x1, y1,右下角坐标为 x2, y2。图像的左上角坐标为 0, 0。
代码示例参考-(划线)
$width = $height = 300;
$image = imagecreatetruecolor($width, $height);
# $image = imagecreatefromjpeg('./ren.jpg');
$back = imagecolorallocate($image, 255, 255, 255);
$border = imagecolorallocate($image, 0, 0, 0);
$red = imagecolorallocate($image, 255, 0, 0);
$green = imagecolorallocate($image, 0, 255, 0);
imageline($image, 0, 0, 200, 200, $red);
imageline($image, 20, 30, 220, 280, $green);
header('content-type:image/jpeg');
imagejpeg($image);
imagedestroy($image);
代码示例(三圈交叠)
$size = 300;
$image=imagecreatetruecolor($size, $size);
// 用白色背景加黑色边框画个方框
$back = imagecolorallocate($image, 255, 255, 255);
$border = imagecolorallocate($image, 0, 0, 0);
imagefilledrectangle($image, 0, 0, $size - 1, $size - 1, $back);
imagerectangle($image, 0, 0, $size - 1, $size - 1, $border);
$yellow_x = 100;
$yellow_y = 75;
$red_x = 120;
$red_y = 165;
$blue_x = 187;
$blue_y = 125;
$radius = 150;
// 用 alpha 值分配一些颜色
$yellow = imagecolorallocatealpha($image, 255, 255, 0, 75);
$red = imagecolorallocatealpha($image, 255, 0, 0, 75);
$blue = imagecolorallocatealpha($image, 0, 0, 255, 75);
// 画三个交迭的圆
imagefilledellipse($image, $yellow_x, $yellow_y, $radius, $radius, $yellow);
imagefilledellipse($image, $red_x, $red_y, $radius, $radius, $red);
imagefilledellipse($image, $blue_x, $blue_y, $radius, $radius, $blue);
// 不要忘记输出正确的 header!
header('Content-type: image/png');
// 最后输出结果
imagepng($image);
imagedestroy($image);
PHP中GD库的更多相关文章
- 一起学习PHP中GD库的使用(三)
上篇文章我们已经学习了一个 GD 库的应用,那就是非常常用的制作验证码的功能.不过在现实的业务开发中,这种简单的验证码已经使用得不多了,大家会制作出更加复杂的验证码来使用.毕竟现在的各种外挂软件已经能 ...
- 一起学习PHP中GD库的使用(二)
在日常的开发过程中,GD 库最常用的功能就是帮我们对图片进行一些处理,当然,除了处理已有的图片之外,它也可以直接来画图,就像我们最常见的图片验证码.今天的内容主要就是和画图有关,所以最后我们也会做一个 ...
- 一起学习PHP中GD库的使用(一)
又到了一个大家非常熟悉的库了,对于图像图形的处理来说,GD 库是 PHPer 们绕不过去的一道坎.从很早很早的 CMS 或者 Discuz 时代,各类开源软件在安装的时候就会明确地指出 GD 库是它们 ...
- php中GD库的简单使用
在php中需要图像处理的地方GD库会发挥重要的作用,php可以创建并处理包括GIF,PNG,JPEG,WBMP以及XPM在内的多种图像格式,简单的举几个例子: 1.用GD库会创建一块空白图片,然后绘制 ...
- php中GD库的一些简单使用
今天了解了一些GD库的简单使用,现在稍微做一下总结! GD库是什么?,graphic device,图像工具库,gd库是php处理图形的扩展库,gd库提供了一系列用来处理图片的API,使用GD库可以处 ...
- (转)php中GD库的配置,解决dedecms安装中GD不支持问题
了解gd库 在php中,使用gd库来对图像进行操作,gd库是一个开放的动态创建的图像的源代码公开的函数库,可以从官方网站http://www.boutell.com/gd处下载.目前,gd库支持gif ...
- PHP中GD库安装
安装gd库扩展不能像其他扩展安装一样,直接./configure --prefix=/xxx 还需要激活png,jpeg,字库等支持 ./configure --prefix=/xxx --with- ...
- 【代码学习】PHP中GD库的使用
PHP--GD库 ================================================ 一.支持: 需要php支持GD库 二.作用: 验证码.水印.缩放等 三.绘画步骤: ...
- PHP中GD库是做什么用的? PHP GD库介绍11111111
什么是gd库? gd库是php处理图形的扩展库,gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片. 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据 ...
- 关于织梦系统不支持php中GD库的问题
大多数人在显成的PHP的CMS时,如织梦CMS,安装的时候不支持GD库,就导致整个网站的验证码不显示,以下是个人对此类问题的解决办法: 1.首先找到wamp的安装目录,找到PHP的文件夹,打开php. ...
随机推荐
- SQL常用日期格式化转换与百分数转换
目录 SQL将小数转为保留两位的百分数 常用的日期格式化 补充: 秒/毫秒转为持续时间 常用拼接方式: 本篇开启数据库在工作中常用到的格式转换与工具,欢迎大家评论留言 SQL将小数转为保留两位的百分数 ...
- 六、docker数据卷
系列导航 一.docker入门(概念) 二.docker的安装和镜像管理 三.docker容器的常用命令 四.容器的网络访问 五.容器端口转发 六.docker数据卷 七.手动制作docker镜像 八 ...
- 改变函数内this指向方法——call、apply、bind
javascript为我们专门提供了一些函数方法来帮我们更优雅的处理函数内部this的指向问题,常用的有bind( ).call( ).apply( )三种方法. 相同点: 都可以改变函数内部的thi ...
- arguments使用
arguments在函数中可以使用,表示包含了当前函数调用时传入的实参. arguments通过索引值获取实参,索引值从开始,按顺序依次表示函数调用时传过来的实参. 1 // arguments的使用 ...
- P1077-DP【黄】
昨天好几道题没做出来很郁闷,结果今天上来半小时不到就直接做出一道黄DP题了,不错,又有写题的冲动了. 这道题我一直被那个"因为方案数可能很多,请输出方案数对 1000007取模的结果.&qu ...
- freeswitch on centos dockerfile模式
概述 freeswitch是一款简单好用的VOIP开源软交换平台. centos7 docker上编译安装fs的流程记录,本文使用dockerfile模式. 环境 docker engine:Vers ...
- shell脚本(7)-shell运算
文档目录: 一.算数运算符 二.关系运算符 三.布尔运算符 四.逻辑运算符 五.字符串运算符 六.文件测试运算符 算术运算符 下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20: ...
- spring--集成RocketMQ
在Spring Boot中集成RocketMQ通常涉及以下步骤: 1. **添加依赖**:首先,需要在项目的`pom.xml`文件中添加RocketMQ的Spring Boot Starter依赖. ...
- 如何看待《李跳跳》APP因被腾讯公司发律师函称“不正当竞争”而无限期停止更新?
一波未平一波又起,继李跳跳无限期停更后,又一安卓神奇工具被下发律师函!近期各路安卓工具APP,被某讯大厂可谓是尽数剿灭~ 不难看出此次行动是"蓄谋已久"了.与李跳跳.大圣净化类似的 ...
- 【面试题精讲】你知道MySQL中有哪些隔离级别吗
有时博客内容会有变动,首发博客是最新的,其他博客地址可能未同步,请认准https://blog.zysicyj.top 首发博客地址 系列文章地址 脏读(Dirty Read)是指一个事务读取到了另一 ...