php基础 gd图像生成、缩放、logo水印和验证码
gd库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片、验证码、水印、缩略图等等。
图像生成
<?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);
?>
文章原地址:http://www.cnblogs.com/weblm/p/5770281.html
php基础 gd图像生成、缩放、logo水印和验证码的更多相关文章
- php基础之gd图像生成、缩放、logo水印和简单验证码实现
gd库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片.验证码.水印.缩略图等等.要使用gd库首先需要开启gd库扩展,windows系统下需要在php.ini中将ext ...
- 【PHP】使用GD库实现 图像生成、缩放、logo水印和简单验证码
gd库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片.验证码.水印.缩略图等等.要使用gd库首先需要开启gd库扩展, windows系统下需要在php.ini中将ex ...
- PHP实现图片的等比缩放和Logo水印功能示例
文章来自于:脚本之家 文章链接:https://www.jb51.net/article/112909.htm 这篇文章主要介绍了PHP实现图片的等比缩放和Logo水印功能,结合实例形式分析了php图 ...
- PHP图片等比缩放,并添加Logo水印特定代码和盯
<? php //PHP图片等比缩放,并添加Logo水印 --->百度 "美日汇" /** * 等比缩放函数(以保存的方式实现) * @param string $pi ...
- 图像添加logo水印函数
<?php //图像添加水印函数 /** *为一张图片添加上一个logo水印(以保存新图片的方式实现) *@param string $picname 被缩放的处理图片源 *@param int ...
- 图片的等比缩放和Logo水印
/** * 等比缩放函数(以保存的方式实现) * @param string $picname 被缩放的处理图片源 * @param int $maxx 缩放后图片的最大宽度 * @param int ...
- PHP生成带logo图像二维码的两种方法
本文主要和大家分享PHP生成带logo图像二维码的两种方法,主要以文字和代码的形式和大家分享,希望能帮助到大家. 一.利用Google API生成二维码Google提供了较为完善的二维码生成接口,调用 ...
- C#图片处理示例(裁剪,缩放,清晰度,水印)
C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比 ...
- C#图片处理高级应用(裁剪,缩放,清晰度,水印)
转自:http://wu-jian.cnblogs.com/ 前言 需求源自项目中的一些应用,比如相册功能,通常用户上传相片后我们都会针对该相片再生成一张缩略图,用于其它页面上的列表显示.随便看一下, ...
随机推荐
- 动态规划:HDU-2955-0-1背包问题:Robberies
解题心得: 这题涉及概率问题,所以要运用概率的知识进行解答.题目要求不被抓到的概率,但是给出的是被抓到的概率,所要用1减去后得到答案.最好使用double类型,避免精度问题导致WA. 先算出可以抢劫的 ...
- windows下pip安装python模块时报错【转】
windows下pip安装python模块时报错总结 请给作者点赞--> 原文链接 1 权限问题 C:\Users\ljf>pip install xlwt Exception: Trac ...
- Diycode开源项目 搭建可以具有下拉刷新和上拉加载的Fragment
1.效果预览 1.1.这个首页就是一个Fragment碎片,本文讲述的就是这个碎片的搭建方式. 下拉会有一个旋转的刷新圈,上拉会刷新数据. 1.2.整体结构 首先底层的是BaseFragment 然后 ...
- Java开发配置
http://www.runoob.com/java/java-environment-setup.html
- 怎么使用瓦特平台下面的“代码工厂”快速生成BS程序代码
这里说一下怎么使用瓦特平台下面的“代码工厂”快速生成程序代码 使用平台:windows+"visual studio 2010"+"SqlServer2000+" ...
- C语言编程题001
有一颗树,一年两个生长周期,春天它长高一倍,夏天长高1m,问N个周期后树有多高?假设从春天开始树高为1m,第0个周期树高为1m. 要求:1.可以同时输入多个生长周期 如:3//表示下面有几个生长周期 ...
- ASP.NET Core 利用中间件支持跨域请求
方法1: 在Startup的ConfigureServices()中添加services.AddCors()在Startup的Configure()中添加app.UseCors(); 保证其在app. ...
- 非常全面的vim配置文件
1.mac下vim全局配置目录 /usr/share/vim/vimrc 一般不对此文件做修改,在用户目录下创建自定义配置,目录为: /Users/xxxxx cd ~ 2自定义vim配置 配置功能: ...
- CSU-1974 神奇药水
CSU-1974 神奇药水 Description 对于csuxushu来说,能够在CSU(California State University)组织2017年的ACM暑期集训让他感到十分荣幸. ...
- 抓取js动态生成数据
最近在抓数据,一般的网页数据抓取相对容易一些,今天在抓电视猫的节目单,发现有些数据时抓取不到的,Java端得到的HTML文件里面没有某一段代码,查了很多资料,发现说是js动态生成的数据,无法直接抓取, ...