pdo文字水印类,验证码类,缩略图类,logo类
文字水印类
<?php/*** webrx.cn qq:7031633* @author webrx* @copyright copyright (c) 2003-2014 webrx Inc. (http://www.webrx.cn)* @version 2014-9-7 webrx@126.com*/class Image {private $f;private $i;private $path;public function __construct($i = '') {$this->f = dirname ( __FILE__ ) . '/f.ttf';if (empty ( $i )) {} else {$this->i = imagecreatefromjpeg ( $i );$this->path = $i;}}public function check($len = 4) {session_start ();header ( 'content-type:image/png' );$fs = ['/a.ttf','/b.ttf','/f.ttf'];$font = dirname ( __FILE__ ) . $fs [mt_rand ( 0, 1 )];$w = 35 * $len;$h = 50;$this->i = imagecreatetruecolor ( $w, $h );$c = imagecolorallocatealpha ( $this->i, 0, 0, 0, 127 );// imagecolortransparent($i,$c);// imagefill($i,0,0,$c);imagefilledrectangle ( $this->i, 0, 0, $w, $h, $this->gc ( $this->i, 'ffffff', mt_rand ( 0, 2 ) ) );$sss = '';for($j = 0; $j < $len; $j ++) {$st = $this->gs ( 1 );$sss .= $st;imagettftext ( $this->i, mt_rand ( 15, 25 ), mt_rand ( - 30, 30 ), $j * 35 + 10, mt_rand ( 28, 38 ), $this->gc ( $this->i ), $font, $st );}$_SESSION ['code'] = $sss;imagesetthickness ( $this->i, mt_rand ( 2, 8 ) );for($j = 0; $j < mt_rand ( 5, 10 ); $j ++) {imagefilledarc ( $this->i, mt_rand ( 0, $w ), mt_rand ( 0, $h ), mt_rand ( 0, $w ), mt_rand ( 0, $h ), mt_rand ( 0, 360 ), mt_rand ( 0, 360 ), $this->gc ( $this->i, 'rand', mt_rand ( 100, 120 ) ), IMG_ARC_NOFILL );}for($j = 0; $j < 10; $j ++) {imagettftext ( $this->i, mt_rand ( 10, 15 ), mt_rand ( - 5, 5 ), mt_rand ( 0, $w ), mt_rand ( 0, $h ), $this->gc ( $this->i, 'rand', mt_rand ( 100, 120 ) ), $font, $this->gs ( 1 ) );}imagepng ( $this->i );}public function gs($n = 4) {$s = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';$t = '';for($i = 0; $i < $n; $i ++) {$t .= substr ( $s, mt_rand ( 0, strlen ( $s ) - 1 ), 1 );}return $t;}public function setImg($i) {$this->i = imagecreatefromjpeg ( $i );$this->path = $i;}public function text($s = 30, $t = '版权所有', $c = 'rand', $a = 0, $p = 5, $f = true, $fn = 't_') {$ii = getimagesize ( $this->path );if ($ii [2] == 2) {if ($ii [0] > 300) {$pos = imagettfbbox ( $s, 0, $this->f, $t );$pad = 30;switch ($p) {case 1 : // 左上角$x = 0 - $pos [0] + $pad;$y = 0 - $pos [7] + $pad;break;case 2 : // 上边 水平中央$x = ($ii [0] - $pos [2]) / 2;$y = 0 - $pos [7] + $pad;break;case 3 :$x = $ii [0] - $pos [2] - $pad;$y = 0 - $pos [7] + $pad;break;case 4 :$x = 0 - $pos [0] + $pad;$y = ($ii [1] - $pos [6]) / 2;break;case 5 :$x = ($ii [0] - $pos [2]) / 2;$y = ($ii [1] - $pos [6]) / 2;break;case 6 :$x = $ii [0] - $pos [2] - $pad;$y = ($ii [1] - $pos [6]) / 2;break;case 7 :$x = 0 - $pos [0] + $pad;$y = $ii [1] - $pos [6] - $pad;break;case 8 :$x = ($ii [0] - $pos [2]) / 2;$y = $ii [1] - $pos [6] - $pad;break;case 9 :$x = $ii [0] - $pos [2] - $pad;$y = $ii [1] - $pos [6] - $pad;break;}imagettftext ( $this->i, $s, 0, $x, $y, $this->gc ( $this->i, $c, $a ), $this->f, $t );if ($f) {imagejpeg ( $this->i, $this->path );} else {$path = dirname ( $this->path ) . '/';$name = $fn . substr ( $this->path, strrpos ( $this->path, '/' ) + 1 );imagejpeg ( $this->i, $path . $name );}}}}public function logo($p = 5, $f = true, $fn = 'logo_') {$ii = getimagesize ( $this->path );if ($ii [2] == 2) {if ($ii [0] > 300) {$w = $ii [0];$h = $ii [1];// 水银图标 logo.png 格式$logo = dirname ( __FILE__ ) . '/logo.png';$li = imagecreatefrompng ( $logo );$liw = imagesx ( $li );$lih = imagesy ( $li );$x = ($w - $liw) / 2;$y = ($h - $lih) / 2;$pad = 35;switch ($p) {case 1 :$x = 0 + $pad;$y = 0 + $pad;break;case 2 :$y = 0 + $pad;break;case 3 :$x = $w - $liw - $pad;$y = 0 + $pad;break;case 4 :$x = 0 + $pad;break;case 6 :$x = $w - $liw - $pad;break;case 7 :$x = 0 + $pad;$y = $h - $lih - $pad;break;case 8 :$y = $h - $lih - $pad;break;case 9 :$x = $w - $liw - $pad;$y = $h - $lih - $pad;break;}imagecopy ( $this->i, $li, $x, $y, 0, 0, $liw, $lih );if ($f) {imagejpeg ( $this->i, $this->path );} else {$path = dirname ( $this->path ) . '/';$name = $fn . substr ( $this->path, strrpos ( $this->path, '/' ) + 1 );imagejpeg ( $this->i, $path . $name );}imagedestroy ( $li );}}}public function thumb($f = false, $w = 220, $h = 0, $fn = 's_') {$ii = getimagesize ( $this->path );if ($ii [2] == 2) {if ($ii [0] > $w) {$sw = $ii [0];$sh = $ii [1];$h = $h == 0 ? $w / $sw * $sh : $h;$dst = imagecreatetruecolor ( $w, $h );imagecopyresampled ( $dst, $this->i, 0, 0, 0, 0, $w, $h, $sw, $sh );if ($f) {imagejpeg ( $dst, $this->path );} else {$path = dirname ( $this->path ) . '/';$name = $fn . substr ( $this->path, strrpos ( $this->path, '/' ) + 1 );imagejpeg ( $dst, $path . $name );}imagedestroy ( $dst );}}}public function gc($i, $c = 'rand', $a = 0) {$color = '';switch ($c) {case 'white' :$color = imagecolorallocatealpha ( $i, 255, 255, 255, $a );break;case 'black' :$color = imagecolorallocatealpha ( $i, 0, 0, 0, $a );break;case 'red' :$color = imagecolorallocatealpha ( $i, 255, 0, 0, $a );break;case 'green' :$color = imagecolorallocatealpha ( $i, 0, 255, 0, $a );break;case 'rand' :$color = imagecolorallocatealpha ( $i, mt_rand ( 0, 255 ), mt_rand ( 0, 255 ), mt_rand ( 0, 255 ), $a );break;default :$cc = str_split ( $c, 2 );$color = imagecolorallocatealpha ( $i, hexdec ( $cc [0] ), hexdec ( $cc [1] ), hexdec ( $cc [2] ), $a );break;}return $color;}public function __destruct() {if (isset ( $this->i )) {imagedestroy ( $this->i );}}}
<?phpinclude 'inc/Image.class.php';$i=new Image('c:/a.jpg');$i->text();
<?phpinclude 'inc/Image.class.php';$i=new Image('c:/a.jpg');$i->text();$i->setImg('c:/b.jpg');$i->text(50);$i->setImg('c:/c.jpg');$i->text(100);
<?phpinclude 'inc/Image.class.php';$i=new Image();$i->check(4);
<?phpinclude 'inc/Image.class.php';$i=new Image();$i->setImg('c:/d.jpg');$i->thumb(false,200);
<?phpinclude 'inc/Image.class.php';$i=new Image();$i->setImg('c:/d.jpg');$i->logo();
<?phpinclude 'inc/Image.class.php';$i=new Image();$i->setImg('c:/d.jpg');$i->logo(5,false); //5 表示位置,false表示新建一张图片
pdo文字水印类,验证码类,缩略图类,logo类的更多相关文章
- php使用GD库实现图片水印和缩略图——封装成类
学完了如何使用GD库来实现对图片的各种处理,那么我们可以发现,不管哪种方法,都有相似之处,如果我们把这些相似的地方和不相似的地方都封装成类,这样就可以提升代码的速度,而且节省了很多时间,废话不多说,来 ...
- 本图片处理类功能非常之强大可以实现几乎所有WEB开发中对图像的处理功能都集成了,包括有缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等功能
import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...
- java常用开发工具类之 图片水印,文字水印,缩放,补白工具类
import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...
- PHP的生成图片或文字水印的类
ImageWatermark.php <?php /*********************************************************** 类名:ImageWat ...
- php 图片操作类,支持生成缩略图,添加水印,上传缩略图
<?php class Image { //类开始 public $originimage = ""; //源图片文件地址 public $image ...
- * 类描写叙述:字符串工具类 类名称:String_U
/****************************************** * 类描写叙述:字符串工具类 类名称:String_U * ************************** ...
- DRF框架(五)——context传参,二次封装Response类,两个视图基类(APIView/GenericAPIView),视图扩展类(mixins),子类视图(工具视图),视图集(viewsets),工具视图集
复习 1.整体修改与局部修改 # 序列化get (给前端传递参数) #查询 ser_obj = ModelSerializer(model_obj) #只传递一个参数,默认是instance的参数,查 ...
- C# 生成图片验证码 图片缩略图 水印
using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D ...
- 22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表。然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB输出大写的英文字母表。最后编写主类C,在主类的main方法 中测试类A与类B。
22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表.然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法sh ...
随机推荐
- Certificate、Provisioning Profile、App ID
关于 Certificate.Provisioning Profile.App ID 的介绍及其之间的关系 2014-03-13 15:26 13416人阅读 评论(1) 收藏 举报 目录(?)[ ...
- 循环数据forin,foreach,for of
最近一直在对数据处理,循环匹配之类的,我的mentor也已经多次指出一个问题,就是在循环里面用if去判断一个数值是否存在的时候,只要找到就要退出,这个时候就要对循环的语法提出了要求: 1.for in ...
- Poisson Distribution——泊松分布
老师留个小作业,用EXCEL做不同lambda(np)的泊松分布图,这里分别用EXCEL,Python,MATLAB和R简单画一下. 1. EXCEL 运用EXCEL统计学公式,POISSON,算出各 ...
- 标准库中的-stack
#include <sequence_concepts.h> __STL_BEGIN_NAMESPACE // Forward declarations of operators == a ...
- Python::OS 模块 -- 文件和目录操作
os模块的简介参看 Python::OS 模块 -- 简介 os模块的进程管理 Python::OS 模块 -- 进程管理 os模块的进程参数 Python::OS 模块 -- 进程参数 os模块中包 ...
- 在笔记本电脑开通无线WIFI
1.Windows + R启动运行,输入services.msc进入服务 2.在服务中将Security Center服务从自动启动转为禁止启动 3.在服务中将Windows Firewall的启动类 ...
- 2016HUAS_ACM暑假集训2K - Hero(英雄)
这也属于一个贪心题.关键是排序的依据. 这题排序的依据是敌人的伤害/血量(DPS/HP),不难证明,当这个比值相同时,不论先解决谁效果是相同的.思路大部分在注释里. 题目大意: 假设你的血量无限,但是 ...
- Android学习四:数据库操作
1前言 android中使用SQLite作为数据库,在进行相关的开发的时候不需要导入包.SQLite起符合SQL标准,也有自己的一些特性,是一个轻量级的数据库. 2代码 简单的数据库类封装 packa ...
- Android学习二:Http操作
1.初步认识HTTP HTTP(Hypertext Transfer Protocol超文本传输协议)是网络应用层协议,建立在TCP/IP基础上,HTTP使用可靠的TCP连接,默认端口是80. 较常用 ...
- 在CentOS_RHEL 6上安装Metasploit的框架
https://github.com/rapid7/metasploit-framework/wiki/Nightly-Installers 1. shyum update curl https:// ...