全国咨询热线:18720358503

thumb.class.php源码

类别:媒体报道 发布时间:2021-04-07 浏览人次:

 array("create"= "ImageCreateFromjpeg","output"= "imagejpeg"),
 "gif" = array("create"= "ImageCreateFromGIF" ,"output"= "imagegif"),
 "png" = array("create"= "imagecreatefrompng" ,"output"= "imagepng"),
 "wbmp" = array("create"= "imagecreatefromwbmp","output"= "image2wbmp"),
 "jpeg" = array("create"= "ImageCreateFromjpeg","output"= "imagejpeg"));
 * 结构涵数
 function ThumbHandler()
 $this- mask_font_color = "#ffffff";
 $this- font = 2;
 $this- font_size = 12;
 * 获得照片的宽
 function getImgWidth($src)
 return imagesx($src);
 * 获得照片的高
 function getImgHeight($src)
 return imagesy($src);
 * 设定照片转化成相对路径
 * @param string $src_img 照片转化成相对路径
 function setSrcImg($src_img)
 file_exists($src_img)?($this- src_img = $src_img):die("照片不会有");
 * 设定照片转化成相对路径
 * @param string $dst_img 照片转化成相对路径
 function setDstImg($dst_img)
 $arr = explode('/',$dst_img);
 $last = array_pop($arr);
 $path = implode('/',$arr);
 $this- _mkdirs($path);
 $this- dst_img = $dst_img;
 * 设定照片的显示信息品质
 * @param string $n 品质
 function setImgDisplayQuality($n)
 $this- img_display_quality = (int)$n;
 * 设定照片的转化成品质
 * @param string $n 品质
 function setImgCreateQuality($n)
 $this- img_create_quality = (int)$n;
 * 设定文本图片水印
 * @param string $word 图片水印文本
 * @param integer $font 图片水印字体样式
 * @param string $color 图片水印字体样式色调
 function setMaskWord($word)
 $this- mask_word .= $word;
 * 设定字体样式色调
 * @param string $color 字体样式色调
 function setMaskFontColor($color="#ffffff")
 $this- mask_font_color = $color;
 * 设定图片水印字体样式
 * @param string|integer $font 字体样式
 function setMaskFont($font=2)
 if(!is_numeric($font) !file_exists($font))
 die("字体样式文档不会有");
 $this- font = $font;
 * 设定文本字体样式尺寸,仅对truetype字体样式合理
 function setMaskFontSize($size = "12")
 $this- font_size = $size;
 * 设定照片图片水印
 * @param string $img 图片水印照片源
 function setMaskImg($img)
 $this- mask_img = $img;
 * 设定图片水印横着偏位
 * @param integer $x 横着偏位量
 function setMaskOffsetX($x)
 $this- mask_offset_x = (int)$x;
 * 设定图片水印竖向偏位
 * @param integer $y 竖向偏位量
 function setMaskOffsetY($y)
 $this- mask_offset_y = (int)$y;
 * 特定图片水印部位
 * @param integer $position 部位,1:左上,2:左下,3:右上,0/4:右下
 function setMaskPosition($position=0)
 $this- mask_position = (int)$position;
 * 设定照片合拼水平
 * @param integer $n 合拼水平
 function setMaskImgPct($n)
 $this- mask_img_pct = (int)$n;
 * 设定文本合拼水平
 * @param integer $n 合拼水平
 function setMaskTxtPct($n)
 $this- mask_txt_pct = (int)$n;
 * 设定缩列图外框
 * @param (种类) (主要参数名) (叙述)
 function setDstImgBorder($size=1, $color="#000000")
 $this- img_border_size = (int)$size;
 $this- img_border_color = $color;
 * 建立照片,主涵数
 * @param integer $a 当缺乏第二个主要参数时,此主要参数将作为百分数,
 * 不然做为总宽值
 * @param integer $b 照片放缩后的高宽比
 function createImg($a, $b=null)
 $this- _loadImg();
 $num = func_num_args();
 if(1 == $num)
 $r = (int)$a;
 if($r 1)
 die("照片放缩占比不可低于1");
 $this- img_scale = $r;
 $this- _setNewImgSize($r);
 if(2 == $num)
 $w = (int)$a;
 $h = (int)$b;
 if(0 == $w)
 die("总体目标总宽不可以为0");
 if(0 == $h)
 die("总体目标高宽比不可以为0");
 $this- _setNewImgSize($w, $h);
 $this- _createMask();
 $this- _output();
 // 释放出来
 imagedestroy($this- h_src);
 imagedestroy($this- h_dst);
 * 转化成图片水印,启用了转化成图片水印文本和图片水印照片2个方式
 function _createMask()
 if($this- mask_word)
 // 获得字体样式信息内容
 $this- _setFontInfo();
 if($this- _isFull())
 die("图片水印文本过大");
 else
 $this- h_dst = imagecreatetruecolor($this- dst_w, $this- dst_h);
 $this- _drawBorder();
 imagecopyresampled( $this- h_dst, $this- h_src,
 $this- start_x, $this- start_y,
 0, 0,
 $this- end_x, $this- end_y,
 $this- src_w, $this- src_h);
 $this- _createMaskWord($this- h_dst);
 if($this- mask_img)
 $this- _loadMaskImg();//载入时,获得宽高
 if($this- _isFull())
 // 将图片水印转化成在原照上再拷
 $this- _createMaskImg($this- h_src);
 $this- h_dst = imagecreatetruecolor($this- dst_w, $this- dst_h);
 $this- _drawBorder();
 imagecopyresampled( $this- h_dst, $this- h_src,
 $this- start_x, $this- start_y,
 0, 0,
 $this- end_x, $this- end_y,
 $this- src_w, $this- src_h);
 else
 // 建立新图并复制
 $this- h_dst = imagecreatetruecolor($this- dst_w, $this- dst_h);
 $this- _drawBorder();
 imagecopyresampled( $this- h_dst, $this- h_src,
 $this- start_x, $this- start_y,
 0, 0,
 $this- end_x, $this- end_y,
 $this- src_w, $this- src_h);
 $this- _createMaskImg($this- h_dst);
 if(empty($this- mask_word) empty($this- mask_img))
 $this- h_dst = imagecreatetruecolor($this- dst_w, $this- dst_h);
 $this- _drawBorder();
 imagecopyresampled( $this- h_dst, $this- h_src,
 $this- start_x, $this- start_y,
 0, 0,
 $this- end_x, $this- end_y,
 $this- src_w, $this- src_h);
 * 画外框
 function _drawBorder()
 if(!empty($this- img_border_size))
 $c = $this- _parseColor($this- img_border_color);
 $color = ImageColorAllocate($this- h_src,$c[0], $c[1], $c[2]);
 imagefilledrectangle($this- h_dst,0,0,$this- dst_w,$this- dst_h,$color);// 添充情况色
 * 转化成图片水印文本
 function _createMaskWord($src)
 $this- _countMaskPos();
 $this- _checkMaskValid();
 $c = $this- _parseColor($this- mask_font_color);
 $color = imagecolorallocatealpha($src, $c[0], $c[1], $c[2], $this- mask_txt_pct);
 if(is_numeric($this- font))
 imagestring($src,
 $this- font,
 $this- mask_pos_x, $this- mask_pos_y,
 $this- mask_word,
 $color);
 else
 imagettftext($src,
 $this- font_size, 0,
 $this- mask_pos_x, $this- mask_pos_y,
 $color,
 $this- font,
 $this- mask_word);
 * 转化成图片水印图
 function _createMaskImg($src)
 $this- _countMaskPos();
 $this- _checkMaskValid();
//echo($this- mask_pos_x);
//echo($this- mask_pos_y);
 imagecopymerge($src,
 $this- h_mask,
 $this- mask_pos_x ,$this- mask_pos_y,
 0, 0,
 $this- mask_w, $this- mask_h,
 $this- mask_img_pct);
 imagedestroy($this- h_mask);
 * 载入图片水印图
 function _loadMaskImg()
 $mask_type = $this- _getPostfix($this- mask_img);
 $this- _checkValid($mask_type);
 $func_name = $this- all_type[$mask_type]['create'];
 if(function_exists($func_name))
 $this- h_mask = $func_name($this- mask_img);
 $this- mask_w = $this- getImgWidth($this- h_mask);
 $this- mask_h = $this- getImgHeight($this- h_mask);
 else
 die($func_name."涵数不被适用");
 * 获得照片資源
 function _loadImg()
 $this- img_type = $this- _getPostfix($this- src_img);
 $this- _checkValid($this- img_type);
 $img_type = $this- img_type;
 $func_name = $this- all_type[$img_type]['create'];
 if(function_exists($func_name))
 $this- h_src = $func_name($this- src_img);
 $this- src_w = $this- getImgWidth($this- h_src);
 $this- src_h = $this- getImgHeight($this- h_src);
 else
 die($func_name."涵数不被适用");
 * 照片輸出
 function _output()
 $img_type = $this- img_type;
 $func_name = $this- all_type[$img_type]['output'];
 if(function_exists($func_name))
 // 分辨访问器,倘若IE也不推送头
 if(isset($_SERVER['HTTP_USER_AGENT']))
 $ua = strtoupper($_SERVER['HTTP_USER_AGENT']);
 if(!preg_match('/^.*MSIE.*\)$/i',$ua))
 header("Content-type:$img_type");
 $func_name($this- h_dst, $this- dst_img, $this- img_display_quality);
 else
 Return false;
 * 剖析色调
 * @param string $color 十六进制色调
 function _parseColor($color)
 $arr = array();
 for($ii=1; $ii_isFull())
 switch($this- mask_position)
 case 1:
 // 左上
 $this- mask_pos_x = $this- mask_offset_x + $this- img_border_size;
 $this- mask_pos_y = $this- mask_offset_y + $this- img_border_size;
 break;
 case 2:
 // 左下
 $this- mask_pos_x = $this- mask_offset_x + $this- img_border_size;
 $this- mask_pos_y = $this- src_h - $this- mask_h - $this- mask_offset_y;
 break;
 case 3:
 // 右上
 $this- mask_pos_x = $this- src_w - $this- mask_w - $this- mask_offset_x;
 $this- mask_pos_y = $this- mask_offset_y + $this- img_border_size;
 break;
 case 4:
 // 右下
 $this- mask_pos_x = $this- src_w - $this- mask_w - $this- mask_offset_x;
 $this- mask_pos_y = $this- src_h - $this- mask_h - $this- mask_offset_y;
 break;
 default:
 // 默认设置将图片水印放进右下,偏位特定清晰度
 $this- mask_pos_x = $this- src_w - $this- mask_w - $this- mask_offset_x;
 $this- mask_pos_y = $this- src_h - $this- mask_h - $this- mask_offset_y;
 break;
 else
 switch($this- mask_position)
 case 1:
 // 左上
 $this- mask_pos_x = $this- mask_offset_x + $this- img_border_size;
 $this- mask_pos_y = $this- mask_offset_y + $this- img_border_size;
 break;
 case 2:
 // 左下
 $this- mask_pos_x = $this- mask_offset_x + $this- img_border_size;
 $this- mask_pos_y = $this- dst_h - $this- mask_h - $this- mask_offset_y - $this- img_border_size;
 break;
 case 3:
 // 右上
 $this- mask_pos_x = $this- dst_w - $this- mask_w - $this- mask_offset_x - $this- img_border_size;
 $this- mask_pos_y = $this- mask_offset_y + $this- img_border_size;
 break;
 case 4:
 // 右下
 $this- mask_pos_x = $this- dst_w - $this- mask_w - $this- mask_offset_x - $this- img_border_size;
 $this- mask_pos_y = $this- dst_h - $this- mask_h - $this- mask_offset_y - $this- img_border_size;
 break;
 default:
 // 默认设置将图片水印放进右下,偏位特定清晰度
 $this- mask_pos_x = $this- dst_w - $this- mask_w - $this- mask_offset_x - $this- img_border_size;
 $this- mask_pos_y = $this- dst_h - $this- mask_h - $this- mask_offset_y - $this- img_border_size;
 break;
 * 设定字体样式信息内容
 function _setFontInfo()
 if(is_numeric($this- font))
 $this- font_w = imagefontwidth($this- font);
 $this- font_h = imagefontheight($this- font);
 // 测算图片水印字体样式所占宽高
 $word_length = strlen($this- mask_word);
 $this- mask_w = $this- font_w*$word_length;
 $this- mask_h = $this- font_h;
 else
 $arr = imagettfbbox ($this- font_size,0, $this- font,$this- mask_word);
 $this- mask_w = abs($arr[0] - $arr[2]);
 $this- mask_h = abs($arr[7] - $arr[1]);
 * 设定新图规格
 * @param integer $img_w 总体目标总宽
 * @param integer $img_h 总体目标高宽比
 function _setNewImgSize($img_w, $img_h=null)
 $num = func_num_args();
 if(1 == $num)
 $this- img_scale = $img_w;// 总宽做为占比
 $this- fill_w = round($this- src_w * $this- img_scale / 100) - $this- img_border_size*2;
 $this- fill_h = round($this- src_h * $this- img_scale / 100) - $this- img_border_size*2;
 $this- dst_w = $this- fill_w + $this- img_border_size*2;
 $this- dst_h = $this- fill_h + $this- img_border_size*2;
 if(2 == $num)
 $fill_w = (int)$img_w - $this- img_border_size*2;
 $fill_h = (int)$img_h - $this- img_border_size*2;
 if($fill_w 0 || $fill_h 0)
 die("照片外框过大,已超出了照片的总宽");
 $rate_w = $this- src_w/$fill_w;
 $rate_h = $this- src_h/$fill_h;
 if($rate_w $rate_h)
 $this- fill_w = (int)$fill_w;
 $this- fill_h = round($this- src_h/$rate_w);
 else
 $this- fill_w = round($this- src_w/$rate_h);
 $this- fill_h = (int)$fill_h;
 $this- dst_w = $this- fill_w + $this- img_border_size*2;
 $this- dst_h = $this- fill_h + $this- img_border_size*2;
 $this- start_x = $this- img_border_size;
 $this- start_y = $this- img_border_size;
 $this- end_x = $this- fill_w;
 $this- end_y = $this- fill_h;
 * 查验图片水印图是不是超过转化成后的照片宽高
 function _isFull()
 Return ( $this- mask_w + $this- mask_offset_x $this- fill_w
 || $this- mask_h + $this- mask_offset_y $this- fill_h)
 ?true:false;
 * 查验图片水印图是不是超出原照
 function _checkMaskValid()
 if( $this- mask_w + $this- mask_offset_x $this- src_w
 || $this- mask_h + $this- mask_offset_y $this- src_h)
 die("图片水印照片规格超过原照,请变小图片水印图");
 * 获得文档后缀名,做为类组员
 function _getPostfix($filename)
 return substr(strrchr(trim(strtolower($filename)),"."),1);
 * 查验照片种类是不是合理合法,启用了array_key_exists涵数,此涵数规定
 * php版本号超过4.1.0
 * @param string $img_type 文档种类
 function _checkValid($img_type)
 if(!array_key_exists($img_type, $this- all_type))
 Return false;
 * 按特定相对路径转化成文件目录
 * @param string $path 相对路径
 function _mkdirs($path)
 $adir = explode('/',$path);
 $dirlist = '';
 $rootdir = array_shift($adir);
 if(($rootdir!='.'||$rootdir!='..') !file_exists($rootdir))
 mkdir($rootdir);
 foreach($adir as $key= $val)
 if($val!='.' $val!='..')
 $dirlist .= "/".$val;
 $dirpath = $rootdir.$dirlist;
 if(!file_exists($dirpath))
 mkdir($dirpath);
 chmod($dirpath,0777);
? 
上一篇:美隆居散热器
下一篇:没有了

推荐阅读

thumb.class.php源码

array("create"= "ImageCreateFromjpeg","output"= "imagejpeg"),"gif" = array("create"= "ImageCreateFromGIF" ,"output"= "imagegif"),"png" = array("create"= "imagecreatefrompng" ,"output"= "imagepng"),"wbmp" = array("create"= "imagecreatefromw...

2021-04-07
人流量统计分析拍摄头

精确人流量统计分析三合一万店掌人流量统计分析剖析系统软件 精确收集人流量数,追踪消费者行動运动轨迹,产生网络热点数据信息操控人流量质量互变规律化发展趋势及缘故连接市...

2021-04-07
商城类电商平台-宣传海报全集哪儿找?怎样制作

编辑海报需要注意哪些要点?对于新编辑来说,海报编辑有什么好的图片制作工具可以学习?海报大全有吗?想知道的话,请阅读下面的文章! 首先,我建议大家用凡科快图图片制作软件...

2021-04-07
dedecms织梦cms模版怎样任意启用文章内容标识

编码完成: {dede:arclist row= 500 pagesize= 4 titlelen= 50 orderby= rand }li a href= [field:arcurl/] title= [field:title /] [field:title /] /a /li {/dede:arclist} row= 500 回到500个文本文档目录;pagesize= 4 从上边的500个...

2021-04-07
美隆居散热器

主营业务业务流程:钢制系列产品、铜铝复合型系列产品、钢铝复合型系列产品、钢制卫浴洁具系列产品、钢制异形系列产品等五大系列产品采暖散热器商品 提升主重要词:...

2021-04-07
索尼A7S3此次升級有点儿猛 具有15档动态性范畴

索尼A7S3此次升級有点儿猛 具有15档动态性范畴 [IT搜购网 原創] :02 编写:文中来源于安宁洋电脑上网A7S III全新信息来喽,索尼此次对A7S II的升級用劲很猛,据传新机器备15档动态性范畴,...

2021-04-06
X

400-8700-61718720358503
企业邮箱2639601583@qq.com
官方微信