gd库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片、验证码、水印、缩略图等等。要使用gd库首先需要开启gd库扩展,

windows系统下需要在php.ini中将extension=php_gd2.dll 前边的分号去掉然后重启web服务器,

linux系统下一般在编译php时已经开启gd库扩展,要是没有开启gd库扩展则需要先编译安装freetype ,jpegsrc,libpng再用phpize安装扩展库进行编译安装。

图像生成:

<?php
/*
用windows画图板画图
1.新建空白画布(指定宽高)
2.创建颜料.(红,r 绿g 蓝b,三原色组成的. 三原色由弱到强各可以选0-255之间)
3.画线,写字,画图形,填充等
4.保存/输出图片
5.销毁画布
*/ //用gd库来画图,仍是以上5个步骤.
// 1:造画布,以资源形式返回 imagecreatetruecolor(宽,高);
$im = imagecreatetruecolor(,); // 2: 创建颜料 imagecolorallocate(画布, 红,绿,蓝)
$gray = imagecolorallocate($im,,,); // 3: 填充画布
imagefill($im,,,$gray); // 4: 保存成图片 imagepng(画布 [, 保存位置 ]),imagejpeg(),imagegif()
header('content-type:image/jpeg');
imagepng($im); // 5: 销毁画布 销毁画面 imagedestroy(画布)
imagedestroy($im); ?>

缩率图

<?php
/*
步骤:
1.打开图片源文件资源
2.获得源文件的宽高
3.使用固定的公式计算新的宽高
4.生成目标图像资源
5.进行缩放
6.保存图像
7.释放资源
*/
//1.打开图片源文件资源
$im = imagecreatefromjpeg('./bg.jpg'); //2.获得源文件的宽高
$fx = imagesx($im); // 获取宽度
$fy = imagesy($im); // 获取高度 //3.使用固定的公式计算新的宽高
$sx = $fx/;
$sy = $fy/;
//4.生成目标图像资源
$small = imagecreatetruecolor($sx,$sy); //5.进行缩放
imagecopyresampled($small,$im,,,,,$sx,$sy,$fx,$fy); //6.保存图像
if(imagejpeg($small,'./sbg.jpg')) {
echo '保存成功';
} else {
echo '保存失败';
}
//7.释放资源
imagedestroy($im);
imagedestroy($small); ?>

水印生成

<?php
/*
步骤:
1.分别创建大小图画布并获取它们的宽高
2.添加文字水印
3.执行图片水印处理
4.输出
5.销毁画布
*/
//1.分别创建大小图画布并获取它们的宽高
$big = imagecreatefromjpeg('./bg.jpg');
$bx = imagesx($big);
$by = imagesy($big); $small = imagecreatefrompng('./tu.png');
$sx = imagesx($small);
$sy = imagesy($small); //2.添加水印文字
$blue = imagecolorallocate($big,,,);
imagettftext($big,,,,,$blue,'./msyh.ttf','骄傲的少年'); //3.执行图片水印处理
imagecopymerge($big,$small,$bx-$sx,,,,$sx,$sy,); //4.输出到浏览器
header('content-type: image/jpeg');
imagejpeg($big); //5.销毁画布
imagedestroy($big);
imagedestroy($small); ?>

验证码

<?php
/*
步骤:
1.创建画布
2.造颜料
3.填充背景颜色
4.画干扰点
5.画噪点
6.写字符串
7.输出图片
8.销毁画布
*/
//1.创建画布
$im=imagecreatetruecolor(, ); //2.造颜料
$gray = imagecolorallocate($im,,,);
$red = imagecolorallocate($im,,,);
$blue = imagecolorallocate($im, , , ); //3.填充背景颜色
imagefill($im,,,$blue); //4.画干扰点
for ($i=; $i < ; $i++) {
imageline($im, rand(,),,,rand(,),$red);
} //5.画噪点
for($i=;$i<;$i++){
imagesetpixel($im,rand(,),rand(,),$gray);
} //6.写字符串
$str=substr(str_shuffle('ABCDEFGHIJKMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'),,);
imagestring($im,,,,$str,$red); //7.输出图片
header('content-type:image/png');
imagepng($im); //8.销毁画布
imagedestroy($im); ?>

在使用过程中。如果只是需要输出图片。可以使用  imagepng() 的第二个参数。比如

imagepng($im,'图片存储路径'); 

【PHP】使用GD库实现 图像生成、缩放、logo水印和简单验证码的更多相关文章

  1. php基础之gd图像生成、缩放、logo水印和简单验证码实现

    gd库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片.验证码.水印.缩略图等等.要使用gd库首先需要开启gd库扩展,windows系统下需要在php.ini中将ext ...

  2. GD库处理图像

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

  3. PHP->利用GD库新建图像

    1.确认php中GD库是否开启 在PHP配置文件php.ini中查找extension=php_gd2.dll,去掉前边的(分号) ';' 即可,一般php是默认开启的 2.绘画步骤 创建一个画布(画 ...

  4. PHP 使用GD 库绘制图像,无法显示的问题

    根据官方GD 库绘制图像文档样式 原基本样式 $width = 120; $height = 50; $img = @imagecreatetruecolor($width, $height) or ...

  5. PHP利用GD库绘图和生成验证码图片

    首先得确定php.ini设置有没有打开GD扩展功能,測试例如以下 print_r(gd_info()); 假设有打印出内容例如以下,则说明GD功能有打开: Array ( [GD Version] = ...

  6. php GD库简单使用和封装

    GD库创建图像步骤 <?php //1.创建画布 $width = 300; $height= 200; $image=imagecreatetruecolor($width,$height); ...

  7. php基础 gd图像生成、缩放、logo水印和验证码

    gd库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片.验证码.水印.缩略图等等. 图像生成 <?php /* 用windows画图板画图 1.新建空白画布(指定 ...

  8. PHP验证码生成及图片处理(GD库)

    GD库是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片,也可以给图片加水印. 本章实现了生成图片并绘画各种形状.图片的压缩.中文字符水印及图片水印 ...

  9. GD库的基本信息,图像的旋转、水印、缩略图、验证码,以及图像类的封装

    GD库检测 <?php phpinfo(); ?> GD库安装• Windows 使用phpstudy • Linux 编译安装 –with-gd• Linux 编译安装扩展 GD库支持的 ...

随机推荐

  1. OpenStack提交代码的review流程

    本文整理向openstack社区提交代码的基本流程,以及社区一些介绍资料.如有转载,请注明出处! 先放张图说明一下OpenStack的code review的大体流程: 对OpenStack提交代码更 ...

  2. ARM mbed平台WIZwiki-W7500使用说明

    ARM mbed IDE 是ARM内核微控制器的在线开发工具,其站点是:http://developer.mbed.org. 站点提供了在线编译器,不须要本地安装编译器就可以进行开发,因此没有地点.时 ...

  3. Chrome Adobe Flash Player 因过期而 阻止

    百度搜索重装不管用 作者:胡中元链接:https://www.zhihu.com/question/32223811/answer/60456561来源:知乎著作权归作者所有.商业转载请联系作者获得授 ...

  4. Spring Cloud 微服务的那点事

    什么是微服务 微服务的概念源于2014年3月Martin Fowler所写的一篇文章“Microservices”. 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调 ...

  5. Android应用坐标系统全面具体解释

    1 背景 去年有非常多人私信告诉我让说说自己定义控件,事实上通观网络上的非常多博客都在讲各种自己定义控件,可是大多数都是授之以鱼.却非常少有较为系统性授之于渔的文章,同一时候由于自己也迟迟没有时间规划 ...

  6. js sendBeacon

    页面性能日志: DNS解析耗时 TCP链接耗时 SSL安全链接耗时 网络请求耗时 DOM解析耗时 资源加载耗时 首包时间 白屏时间 首次可交换时间 Dom Ready时间 页面完全加载时间. 如某些统 ...

  7. SharePoint 2013 将HTML文件转换为母版页

    内容中包含 base64string 图片造成字符过多,拒绝显示

  8. saltstack系列2之zabbix-agent自动化部署

    实施前提条件 zabbix-agent通过编译安装的,打成tar包,并且自己先配好master的ip等等之类的配置在/etc下,然后我们后面只需要修改一个Hostname这个配置项即可.. salts ...

  9. VC获得本机网络连接状态

    /本机网络连接类型(成功) #define  NET_TYPE_RAS_DIAL_UP_CONNECT_NET           0x01    //上网类型:采用RAS拨号连接上网    0x01 ...

  10. C# dmp debug, can't load pdb file

    1.  Project->Properties->Build->Advance, Debug Info : Full/pdb-only . set to [none] will no ...