这里分享三个PHP图片处理类:
1. 验证码类
class VerifyCode {
private $charset = 'abcdefghjkmnpqrstuvwxy23456789';
private $code;
private $codelen = 4;
private $width = 150;
private $height = 50;
private $img;
public function __construct() {
session_start();
$this->code = '';
for ($i = 0; $i < $this->codelen; $i++) {
$this->code .= $this->charset[rand(0, strlen($this->charset) - 1)];
}
$_SESSION['verify_code'] = $this->code;
}
public function doimg() {
$this->img = imagecreatetruecolor($this->width, $this->height);
$color = imagecolorallocate($this->img, rand(150, 255), rand(150, 255), rand(150, 255));
imagefilledrectangle($this->img, 0, 0, $this->width, $this->height, $color);
for ($i = 0; $i < 100; $i++) {
$color = imagecolorallocate($this->img, rand(50, 200), rand(50, 200), rand(50, 200));
imagesetpixel($this->img, rand(1, $this->width), rand(1, $this->height), $color);
}
for ($i = 0; $i < strlen($this->code); $i++) {
$fontcolor = imagecolorallocate($this->img, rand(0, 100), rand(0, 100), rand(0, 100));
$x = 10 + $i * ($this->width / 4);
imagestring($this->img, 5, $x, rand(1, 8), $this->code[$i], $fontcolor);
}
header('content-type:image/png');
imagepng($this->img);
imagedestroy($this->img);
}
}
该类可以生成一个图片验证码,并将验证码保存在SESSION中。
2. 缩略图类
class Thumbnail {
private $src;
private $dist;
private $width;
private $height;
public function __construct($src, $dist, $width, $height) {
$this->src = $src;
$this->dist = $dist;
$this->width = $width;
$this->height = $height;
}
public function doimg() {
list($src_w, $src_h, $src_type) = getimagesize($this->src);
switch ($src_type) {
case 1: $src_img = imagecreatefromgif($this->src); break;
case 2: $src_img = imagecreatefromjpeg($this->src); break;
case 3: $src_img = imagecreatefrompng($this->src); break;
}
$scale = min($this->width / $src_w, $this->height / $src_h);
$dist_w = $src_w * $scale;
$dist_h = $src_h * $scale;
$dist_img = imagecreatetruecolor($dist_w, $dist_h);
imagecopyresampled($dist_img, $src_img, 0, 0, 0, 0, $dist_w, $dist_h, $src_w, $src_h);
switch ($src_type) {
case 1: imagegif($dist_img, $this->dist); break;
case 2: imagejpeg($dist_img, $this->dist); break;
case 3: imagepng($dist_img, $this->dist); break;
}
imagedestroy($src_img);
imagedestroy($dist_img);
}
}
该类可以根据给定的宽高生成图像缩略图。
3. 水印类
class Watermark {
private $src;
private $dist;
private $mark;
private $pos;
private $alpha; public function __construct($src, $dist, $mark, $pos = 9, $alpha = 50) {
$this->src = $src;
$this->dist = $dist;
$this->mark = $mark;
$this->pos = $pos;
$this->alpha = $alpha;
} public function doimg() {
list($src_w, $src_h, $src_type) = getimagesize($this->src);
switch ($src_type) {
case 1: $src_img = imagecreatefromgif($this->src); break;
case 2: $src_img = imagecreatefromjpeg($this->src); break;
case 3: $src_img = imagecreatefrompng($this->src); break;
}
list($mark_w, $mark_h, $mark_type) = getimagesize($this->mark);
switch ($mark_type) {
case 1: $mark_img = imagecreatefromgif($this->mark); break;
case 2: $mark_img = imagecreatefromjpeg($this->mark); break;
case 3: $mark_img = imagecreatefrompng($this->mark); break;
}
$dist_img = imagecreatetruecolor($src_w, $src_h);
imagecopy($dist_img, $src_img, 0, 0, 0, 0, $src_w, $src_h);
$mark_x = $src_w - $mark_w;
$mark_y = $src_h - $mark_h;
imagecopymerge($dist_img, $mark_img, $mark_x, $mark_y, 0, 0, $mark_w, $mark_h, $this->alpha);
imagepng($dist_img, $this->dist);
imagedestroy($src_img);
imagedestroy($dist_img);
imagedestroy($mark_img);
}
}
该水印类可以给图像添加水印,支持GIF,JPG和PNG格式,并可以设置水印位置和透明度。
这三个PHP图像处理类,可以实现验证码、缩略图和添加水印等功能,对PHP图像应用开发很有帮助。
© 版权声明
本文刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等部门来源于互联网,版权均归原作者所有!本网站提供的内容服务于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
联系信息:邮箱aoxolcom@163.com或见网站底部。
联系信息:邮箱aoxolcom@163.com或见网站底部。
THE END
















请登录后发表评论
注册
社交帐号登录