使用PHP GD,使用良好,一键剪裁各种尺寸,打包下载。经常换icon的懂的,美工给你一个1024的logo,你得ps出各种尺寸,于是有了这个东西。
代码如下:
?phphtml' target='_blank'>class image { * source image * @var string|array private $source; * temporay image * @var file private $image; private $ext; * erros * @var array private $error; * construct * @param string|array $source public function __construct($source = NULL) { if($source != NULL) { $this- source($source); * set the source image * @param string|array $source public function source($source) { if(!is_array($source)) { $this- source[ name ] = $source; $this- source[ tmp_name ] = $source; $type = NULL; $ext = strtolower(end(explode( . ,$source))); switch($ext) { case jpg : case jpeg : $type = image/jpeg break; case gif : $type = image/gif break; case png : $type = image/png break; $this- source[ type ] = $type; } else { $this- source = $source; $this- destination = $this- source[ name * resize the image * @param int $width * @param int $height public function resize($width = NULL,$height = NULL) { if(isset($this- source[ tmp_name ]) file_exists($this- source[ tmp_name ])) { list($source_width,$source_height) = getimagesize($this- source[ tmp_name ]); if(($width == NULL) ($height != NULL)) { $width = ($source_width * $height) / $source_height; if(($width != NULL) ($height == NULL)) { $height = ($source_height * $width) / $source_width; if(($width == NULL) ($height == NULL)) { $width = $source_width; $height = $source_height; switch($this- source[ type ]) { case image/jpeg : $created = imagecreatefromjpeg($this- source[ tmp_name ]); break; case image/gif : $created = imagecreatefromgif($this- source[ tmp_name ]); break; case image/png : $created = imagecreatefrompng($this- source[ tmp_name ]); break; $this- image = imagecreatetruecolor($width,$height); imagecopyresampled($this- image,$created,0,0,0,0,$width,$height,$source_width,$source_height); * add watermark on image * @param string $mark * @param int $opac * @param int $x_pos * @param int $y_pos public function watermark($mark,$opac,$x_pos,$y_pos) { if(file_exists($mark) ($this- image != )) { $ext = strtolower(end(explode( . ,$mark))); switch($ext) { case jpg : case jpeg : $watermark = imagecreatefromjpeg($mark); break; case gif : $watermark = imagecreatefromgif($mark); break; case png : $watermark = imagecreatefrompng($mark); break; list($watermark_width,$watermark_height) = getimagesize($mark); $source_width = imagesx($this- image); $source_height = imagesy($this- image); if($x_pos == top ) $pos = t else $pos = b if($y_pos == left ) $pos .= l else $pos .= r $dest_x = 0; $dest_y = 0; switch($pos) { case tr : $dest_x = $source_width - $watermark_width; break; case bl : $dest_y = $source_height - $watermark_height; break; case br : $dest_x = $source_width - $watermark_width; $dest_y = $source_height - $watermark_height; break; imagecopymerge($this- image,$watermark,$dest_x,$dest_y,0,0,$watermark_width,$watermark_height,$opac); * crop the image * @param int $x * @param int $y * @param int $width * @param int $height public function crop($x,$y,$width,$height) { if(isset($this- source[ tmp_name ]) file_exists($this- source[ tmp_name ]) ($width 10) ($height 10)) { switch($this- source[ type ]) { case image/jpeg : $created = imagecreatefromjpeg($this- source[ tmp_name ]); break; case image/gif : $created = imagecreatefromgif($this- source[ tmp_name ]); break; case image/png : $created = imagecreatefrompng($this- source[ tmp_name ]); break; $this- image = imagecreatetruecolor($width,$height); imagecopy($this- image,$created,0,0,$x,$y,$width,$height); * create final image file * @param string $destination * @param int $quality public function create($destination,$quality = 100) { if($this- image != ) { $extension = substr($destination,-3,3); switch($extension) { case gif : imagegif($this- image,$destination,$quality); break; case png : $quality = ceil($quality/10) - 1; imagepng($this- image,$destination,$quality); break; default : imagejpeg($this- image,$destination,$quality); break; * check if extension is valid public function validate_extension() { if(isset($this- source[ tmp_name ]) file_exists($this- source[ tmp_name ])) { $exts = array( image/jpeg , image/pjpeg , image/png , image/x-png $ext = $this- source[ type $valid = 0; $this- ext = .not_found if ($ext == $exts[0] || $ext == $exts[1]) { $valid = 1; $this- ext = .jpg // if ($ext == $exts[2]) { // $valid = 1; // $this- ext = .gif // } if ($ext == $exts[2] || $ext == $exts[3]) { $valid = 1; $this- ext = .png if($valid != 1) { $this- error .= extension } else { $this- error .= source * check if the size is correct * @param int $max public function validate_size($max) { if(isset($this- source[ tmp_name ]) file_exists($this- source[ tmp_name ])) { $max = $max * 1024; if($this- source[ size ] = $max) { $this- error .= size } else { $this- error .= source * check if the dimension is correct * @param int $limit_width * @param int $limit_height public function validate_dimension($limit_width,$limit_height) { if(isset($this- source[ tmp_name ]) file_exists($this- source[ tmp_name ])) { list($source_width,$source_height) = getimagesize($this- source[ tmp_name ]); if(($source_width $limit_width) || ($source_height $limit_height)) { $this- error .= dimension } else { $this- error .= source * get the found errors public function error() { $error = array(); if(stristr($this- error, source )) $error[] = 找不到上传文件 if(stristr($this- error, dimension )) $error[] = 上传图片尺寸太大 if(stristr($this- error, extension )) $error[] = 不符合要求的格式 if(stristr($this- error, size )) $error[] = 图片文件太大 return $error; public function error_string() { $error = if(stristr($this- error, source )) $error .= 找不到上传文件 / if(stristr($this- error, dimension )) $error .= 上传图片尺寸太大 / if(stristr($this- error, extension )) $error .= 不符合要求的格式 / if(stristr($this- error, size )) $error .= 图片文件太大 / if(eregi( / $ , $error)) { $error = substr($error, 0, -3); return $error; public function ext() { return $this- }
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
相关推荐:
PHP基于Ajax实现无刷新登录和退出
php操作颜色数值转换颜色为其反色
php通过正则表达式实现语法高亮
以上就是PHP实现批量生成各种尺寸Logo的方法的详细内容,PHP教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答