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(300,200); // 2: 创建颜料 imagecolorallocate(画布, 红,绿,蓝)
$gray = imagecolorallocate($im,100,100,100); // 3: 填充画布
imagefill($im,0,0,$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/2;
$sy = $fy/2;
//4.生成目标图像资源
$small = imagecreatetruecolor($sx,$sy); //5.进行缩放
imagecopyresampled($small,$im,0,0,0,0,$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,0,0,255);
imagettftext($big,16,0,100,100,$blue,'./msyh.ttf','骄傲的少年'); //3.执行图片水印处理
imagecopymerge($big,$small,$bx-$sx,0,0,0,$sx,$sy,37); //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(50, 30); //2.造颜料
$gray = imagecolorallocate($im,30,30,30);
$red = imagecolorallocate($im,255,0,0);
$blue = imagecolorallocate($im, 100, 255, 255); //3.填充背景颜色
imagefill($im,0,0,$blue); //4.画干扰点
for ($i=0; $i <4 ; $i++) {
imageline($im, rand(0,20),0,100,rand(0,60),$red);
} //5.画噪点
for($i=0;$i<100;$i++){
imagesetpixel($im,rand(0,50),rand(0,30),$gray);
} //6.写字符串
$str=substr(str_shuffle('ABCDEFGHIJKMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'),0,4);
imagestring($im,5,5,5,$str,$red); //7.输出图片
header('content-type:image/png');
imagepng($im); //8.销毁画布
imagedestroy($im); ?>

php基础之gd图像生成、缩放、logo水印和简单验证码实现的更多相关文章

  1. 【PHP】使用GD库实现 图像生成、缩放、logo水印和简单验证码

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

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

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

  3. PHP生成带logo图像二维码的两种方法

    本文主要和大家分享PHP生成带logo图像二维码的两种方法,主要以文字和代码的形式和大家分享,希望能帮助到大家. 一.利用Google API生成二维码Google提供了较为完善的二维码生成接口,调用 ...

  4. Why数学图像生成工具

    该软件能够以给定的数学公式及算法生成各种绚烂的数学图像.软件中有两种生成图像的方法: (1)通过一种我自定义的脚本语言生成: 软件中定义一套简单易学的脚本语言,用于描述数学表达式.使用时需要先要将数学 ...

  5. OpenGL ES学习笔记(二)——平滑着色、自适应宽高及三维图像生成

    首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <Android学习笔记--O ...

  6. PHP实现图片的等比缩放和Logo水印功能示例

    文章来自于:脚本之家 文章链接:https://www.jb51.net/article/112909.htm 这篇文章主要介绍了PHP实现图片的等比缩放和Logo水印功能,结合实例形式分析了php图 ...

  7. C#生成带logo的二维码

    带logo的二维码生成分为两步骤:首先根据输入的内容生成二维码图片,然后读取本地的logo图片,通过图片处理生成带logo的二维码. 生成的二维码效果如下: 下面直接贴出二维码生成类   QRCode ...

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

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

  9. (原)caffe中通过图像生成lmdb格式的数据

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5909121.html 参考网址: http://www.cnblogs.com/wangxiaocvp ...

随机推荐

  1. 初刷LeetCode的感受

    自从上个月进入实验室的云安全项目组后,因为要接触到实际的代码,在实验室博士的建议下我们项目组的硕士开始刷LeetCode练习编程能力,保持每周抽空刷几道算法题.虽然刷的不多,到现在一共只刷了不到30题 ...

  2. Oracle 12c 使用scott等普通用户的方法

    目录: 一.前言 二.使用普通用户 三.自动启动PDB 一.前言 最近电脑上安装了oracle 12c数据库,想体验下新特性.安装完后,便像11g一样在dos窗口进行下面的操作: SQL Produc ...

  3. OpenStack云计算快速入门之二:OpenStack安装与配置

    原文:http://blog.chinaunix.net/uid-22414998-id-3265685.html OpenStack云计算----快速入门(2) 该教程基于Ubuntu12.04版, ...

  4. ASP.NET SignalR

    何为ASP.NET SignalR,有什么用 ASP.NET SignalR是一个ASP.NET库,是为了实现实时web通信而创造的,能让服务器与客户端实现即时通信,而不需要服务器等待接收到客户端请求 ...

  5. 虚拟机装系统出现 ntldr is missing(NTLDR丢失)、无法正常开机、解决方法

    虚拟机(VMware Workstation或Hyper-V)装ghost版系统提示“ntldr is missing Press Ctrl+Alt+del to Resta 此方法对实体机.虚拟机安 ...

  6. 导入项目时,有关[2016-04-03 20:38:02 - Dex Loader] Unable to execute dex: Multiple dex files 问题

    最近我在学习androidUI设计,在网上找了一个UI菜单界面开源代码示例,按照步骤导入项目,运行的时候控制台结果报了如下错误: [2016-04-03 20:38:02 - Dex Loader] ...

  7. 第一章 spring核心概念

    一.Spring作用:管理项目中各种业务Bean(service类.Dao类.Action类),实例化类,属性赋值 二.Spring IOC(Inversion of Control )控制反转,也被 ...

  8. Flash Builder 4.7 注册机完美激活方法

    Flash Builder 4.7 破解注册方法目前较为通用的三种方法: 第一种:三步修改配置文件方法,这种有开发者反应这种方法在升级和创建纯 AS 项目时会存在问题,但我懒的去试这种方法的主要原因是 ...

  9. [bzoj1911][Apio2010特别行动队] (动态规划+斜率优化)

    Description Input Output Sample Input - - Sample Output HINT Solution 斜率优化动态规划 首先易得出这样的一个朴素状态转移方程 f[ ...

  10. angular中自定义依赖注入的方法和decorator修饰

    自定义依赖注入的方法 1.factory('name',function () { return function(){ } }); 2.provider('name',function(){ thi ...