$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();
?>