您好,登錄后才能下訂單哦!
這篇文章主要介紹PHP如何封裝圖片水印類,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
封裝PHP的圖片水印的類,具體內(nèi)容如下
<?php header('Content-type:text/html;charset=utf8'); $img = new Image(); // $img->water('2a.jpg','logo.gif',0); class Image{ //路徑 protected $path; //是否啟用隨機(jī)名字 protected $isRandName; //要保存的圖像類型 protected $type; //通過構(gòu)造方法隊(duì)成員屬性進(jìn)行初始化 function __construct($path='./',$isRandName=true,$type='png'){ $this->path = $path; $this->isRandName = $isRandName; $this->type = $type; } //對(duì)外公開的水印方法 /** * @param char $image 原圖 * @param char $water 水印圖片 * @param char $postion 位置 * @param int $tmp 透明度 * @param char $prefix 前綴 */ function water($image,$water,$postion,$tmp=100,$prefix='water_'){ //判斷這兩個(gè)圖片是否存在 if(!file_exists($image)||!file_exists($water)){ die('圖片資源不存在'); } //得到原圖和水印圖片的寬高 $imageInfo = self::getImageInfo($image); $waterInfo = self::getImageInfo($water); //判斷水印圖片是否能貼上來 if (!$this->checkImage($imageInfo,$waterInfo)){ die('水印圖片太大'); } //打開圖片 $imageRes = self::openAnyImage($image); $waterRes = self::openAnyImage($water); //根據(jù)水印圖片的位置計(jì)算水印圖片的坐標(biāo) $pos = $this->getPosition($postion,$imageInfo,$waterInfo); //將水印圖片貼過來 imagecopymerge($imageRes, $waterRes, $pos['x'], $pos['y'], 0, 0, $waterInfo["width"], $waterInfo["height"], $tmp); //得到要保存圖片的文件名 $newName = $this->createNewName($image,$prefix); //得到保存圖片的路徑,也就是文件的全路徑 $newPath = rtrim($this->path,'/').'/'.$newName; //保存圖片 $this->saveImage($imageRes,$newPath); //銷毀資源 imagedestroy($imageRes); imagedestroy($waterRes); //返回路徑 return $newPath; } //保存圖像資源 protected function saveImage($imageRes,$newPath){ $func = 'image'.$this->type; //通過變量函數(shù)進(jìn)行保存 $func($imageRes,$newPath); } //得到文件名函數(shù) protected function createNewName($imagePath,$prefix){ if ($this->isRandName){ $name = $prefix.uniqid().'.'.$this->type; }else { $name = $prefix.pathinfo($imagePath)['filename'].'.'.$this->type; } return $name; } //根據(jù)位置計(jì)算水印圖片的坐標(biāo) protected function getPosition($postion,$imageInfo,$waterInfo){ switch ($postion){ case 1: $x = 0; $y = 0; break; case 2: $x = ($imageInfo['width']-$waterInfo["width"])/2; $y = 0; break; case 3: $x = $imageInfo["width"]- $waterInfo["width"]; $y = 0; break; case 4: $x = 0; $y = ($imageInfo["height"]-$waterInfo["height"])/2; break; case 5: $x = ($imageInfo['width']-$waterInfo["width"])/2; $y = ($imageInfo["height"]-$waterInfo["height"])/2; break; case 6: $x = $imageInfo["width"]- $waterInfo["width"]; $y = ($imageInfo["height"]-$waterInfo["height"])/2; break; case 7: $x = 0; $y = $imageInfo['height'] - $waterInfo["height"]; break; case 8: $x = ($imageInfo['width']-$waterInfo["width"])/2; $y = $imageInfo['height'] - $waterInfo["height"]; break; case 9: $x = $imageInfo["width"]- $waterInfo["width"]; $y = $imageInfo['height'] - $waterInfo["height"]; break; case 0: $x = mt_rand(0, $imageInfo["width"]- $waterInfo["width"]); $y = mt_rand(0, $imageInfo['height'] - $waterInfo["height"]); break; } return ['x'=>$x , 'y'=>$y]; } protected function checkImage($imageInfo,$waterInfo){ if (($waterInfo['width'] > $imageInfo['width'])||($waterInfo['height'] > $imageInfo['height'])){ return false; } return true; } //靜態(tài)方法。根據(jù)圖片的路徑得到圖片的信息,寬度,高度、mime類型 static function getImageInfo($imagePath){ $info = getimagesize($imagePath); $data['width']=$info[0]; $data['height']=$info[1]; $data['mime'] = $info['mime']; return $data; } static function openAnyImage($imagePath){ //得到圖像的mime類型 $mime = self::getImageInfo($imagePath)['mime']; //根據(jù)不同的mime類型打開不同的圖像 switch ($mime){ case 'image/png': $image = imagecreatefrompng($imagePath); break; case 'image/gif': $image = imagecreatefromgif($imagePath); break; case 'image/jpeg': $image = imagecreatefromjpeg($imagePath); break; case 'image/wbmp': $image = imagecreatefromwbmp($imagePath); break; } return $image; } }
以上是“PHP如何封裝圖片水印類”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。