$ico_pic 是你要给图片加水印的水印图片,其它的参数都有详细的说明,如果你下大找这类代码可以下载保存成php文件再利用后面说的调用方法来调用本生成水印图片类代码。
$ico_pic 是你要给图片加水印的水印图片,其它的参数都有详细的说明,如果你下大找这类代码可以下载保存成php教程文件再利用后面说的调用方法来调用本生成水印图片类代码。
*/
class smallpic{ private $src_pic;//原图 private $ico_pic = "003.png";//水印图 private $ico_text = "水印";//水印文字 private $small_width;//缩略图宽度 private $small_height;//缩略图高度 private $is_ico_pic = true;//是否加图片水印 private $is_text = true;//是否加文字水印 private $src_x = 20;//水印在原图的x坐标 private $src_y = 20;//水印在原图的y坐标 private $ut = "utf-8";//文字编码 private $font_color = "#990000";//文字水印颜色 private $samll_pic_name = "smallpic";//小图的名称 private $big_pic_name = "bigpic";//大图的名称 function __construct($src_pic,$small_width,$small_height){ $this->checkfile($src_pic); $this->checkfile($this->ico_pic); $this->src_pic = $src_pic; $this->small_width = $small_width; $this->small_height = $small_height; } private function __get($property_name){ return $this->$property_name; } private function __set($property_name,$value){ return $this->$property_name = $value; } /** * 取得图片的一些基本信息,类型为array */ function getimageinfo($image){ return @getimagesize($image); } /** * 把图片加载到php中 * $image 传进来的图片 */ function getimage($image){ $image_info = $this->getimageinfo($image); switch($image_info[2]){ case 1: $img = @imagecreatefromgif($image); break; case 2: $img = @imagecreatefromjpeg($image); break; case 3: $img = @imagecreatefrompng($image); break; } return $img; } function createimageforsuffix($big_pic,$new_pic){ $image_info = $this->getimageinfo($this->src_pic); switch($image_info[2]){ case 1: //输出大图 @imagegif($big_pic,$this->big_pic_name.".gif"); //输出小图 @imagegif($new_pic,$this->samll_pic_name.".gif"); break; case 2: //输出大图 @imagejpeg($big_pic,$this->big_pic_name.".jpg"); //输出小图 @imagejpeg($new_pic,$this->samll_pic_name.".jpg"); break; case 3: //输出大图 @imagepng($big_pic,$this->big_pic_name.".png"); //输出小图 @imagepng($new_pic,$this->samll_pic_name.".png"); break; } } function checkfile($file){ if(!file_exists($file)){ die("图片:".$file."不存在!"); } } function createsmallimage(){ $big_pic = $this->getimage($this->src_pic); $big_pic_info = $this->getimageinfo($this->src_pic); $new_pic = $this->getimage($this->ico_pic); $new_pic_info = $this->getimageinfo($this->ico_pic); $rgb = $this->convcolor(); //判断是按宽比例缩放还是按高比例缩放 if($big_pic_info[0] > $big_pic_info[1]){ $ratio = $this->small_width/(int)$big_pic_info[0]; $small_pic_width = $this->small_width; $small_pic_height = (int)($big_pic_info[1]*$ratio); }else{ $ratio = $this->small_height/(int)$big_pic_info[1]; $small_pic_height = $this->small_height; $small_pic_width = (int)($big_pic_info[0]*$ratio); } //echo $small_pic_width = (int)($big_pic_info[0]*$ratio); //echo $small_pic_height = (int)($big_pic_info[1]*$ratio); //是否打图片水印 if ($this->is_ico_pic){ //打图片水印 @imagecopy($big_pic,$new_pic,$this->src_x,$this->src_y,0,0,$new_pic_info[0],$new_pic_info[1]); } //是否打文字水印 if ($this->is_text){ //设置文字颜色 $text_color = @imagecolorallocate($big_pic,$rgb[0],$rgb[1],$rgb[2]); //转换文字编码 $text = @iconv($this->ut,"utf-8",$this->ico_text); //打文字水印 @imagettftext($big_pic,12,0,$this->src_x,$this->src_y,$text_color,"simkai_0.ttf",$text); } //新建一个新图片的画板 $new_pic = @imagecreatetruecolor($small_pic_width,$small_pic_height); //生成缩略图 @imagecopyresized($new_pic,$big_pic,0,0,0,0,$small_pic_width,$small_pic_height,$big_pic_info[0],$big_pic_info[1]); //输出图 $this->createimageforsuffix($big_pic,$new_pic); } /** * 类内部的功能函数把#000000转换成255,255,255 */ private function convcolor(){ $rgb = array(); $color = preg_replace("/#/","",$this->font_color); $c = hexdec($color); $r = ($c >> 16) & 0xff; $g = ($c >> 8) & 0xff; $b = $c & 0xff; $rgb[0] = $r; $rgb[1] = $g; $rgb[2] = $b; return $rgb; } }
//调用方法
$pic = new smallpic("002.jpg",600,300);
$pic->is_text = true;
$pic->is_ico_pic = true;
$pic->ico_pic = "./images/004.png";
$pic->ico_text = "新年快乐!";
//$pic->src_x = 80;
$pic->src_y = 80;
$pic->ut = "utf-8";
$pic->font_color = "#0521f8";
$pic->samll_pic_name = "hslsamll";
$pic->big_pic_name = "hslbig";
$pic->createsmallimage();
?>










