这里分享三个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
请登录后发表评论
注册
社交帐号登录