php 給圖片加浮水印

來源:互聯網
上載者:User

標籤:des   class   code   ext   color   c   

昨天下午同事問我一個php的問題,就是給圖片加浮水印,php我也一知半解,網上資料找了一通,自己就寫了一個加浮水印的php類。

具體代碼如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 <?php class WaterGener{         private $default_text="Just for test";     private $default_waterpic="girl.jpg";     private $default_qulity=75;     //預設使用的字型     private $font = ‘simhei.ttf‘; //定義字型       //預設的padding 的值     private $padding=5;       /**     建構函式     **/     function __construct(){       }       //擷取圖片類型     private function getImage($path){         if(!empty($path) && file_exists($path)) {             $water_info = @getimagesize($path);             $water_im;             switch($water_info[2])   {    //取得浮水印圖片的格式                   case 1:$water_im = @imagecreatefromgif($path);break;                  case 2:$water_im = @imagecreatefromjpeg($path);break;                  case 3:$water_im = @imagecreatefrompng($path);break;                  default:return 1;              }              return $water_im;         }         return -1;     }         public function buildWaterImage($picture,$logo="",$savePath="demo.jpg"){         //需要判斷圖片的類型,浮水印圖片的類型         if(!empty($path) && file_exists($path))return -1;           $logoImage =$this->getImage($logo===""?$this->default_waterpic:$logo);           $photoImage =$this->getImage($picture);         if($photoImage==-1){             echo "沒有找到圖片";             return;         }         imagealphablending($photoImage, true);         $logo_size = getimagesize($logo);         $logoW = $logo_size[0];         $logoH = $logo_size[1];         $picture_size = getimagesize($picture);         ImageCopy($photoImage, $logoImage, $picture_size[0]-$logoW-$this->padding, $picture_size[1]-$logoH-$this->padding, 0, 0, $logoW, $logoH);         ImageJPEG($photoImage,$savePath,$this->default_qulity); // output to browser or file         ImageDestroy($photoImage);         ImageDestroy($logoImage);         echo "success...";     }       public function buildWaterText($picture,$text="",$savePath="demo.jpg"){         //需要判斷         $photoImage = $this->getImage($picture);         ImageAlphaBlending($photoImage, true);         $picture_size = getimagesize($picture);         $textcolor = imagecolorallocate($photoImage, 255,255, 255);         //解決亂碼問題         //$text = iconv("GB2312", "UTF-8", $text); //將中文字轉換為UTF8         imagettftext($photoImage, 20, 0, $this->padding, $picture_size[1]-($this->padding*4), $textcolor, $this->font, $text);//將文字寫到圖片中         //imagestring($photoImage, 5, 0, 0,$text, $textcolor);         ImageJPEG($photoImage,$savePath,$this->default_qulity); // output to browser         ImageDestroy($photoImage);     }   } ?>

上面代碼有一些紕漏:

1,浮水印產生的位置,比如說可以是中間,右上方,右下角,等等。需要完善。

2,如果是加文字浮水印,文字浮水印的位置怎麼計算?計算每個文字的寬度和高度?這個還有待完善。

3,異常的處理。php裡面處理異常,我貌似還沒有接觸過。

上面代碼調用方式:

1 2 3 4 5 6 <?php include_once "water.class.php"; $water=new WaterGener(); $water->buildWaterImage("girl.jpg","logo.gif","demo1.jpg"); $water->buildWaterText("girl.jpg","開源中國"); ?>


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.