学习笔记图片水印、缩放处理

<?php
 $image=new Image();
 $image->water("f.jpg","e.jpg",1,100,"wa_");
 class Image{
     protected $path;
     protected $isRandName;
     protected $type;
     public function __construct($path="./",$isRandName=true,$type="png"){
         $this->path=$path;
         $this->isRandName=$isRandName;
         $this->type=$type;
     }
     public function water($image,$water,$position,$tmd,$prefix){
         if(file_exists($image) && file_exists($water)){//判断图片是否存在
             $imageInfo=self::getImageInfo($image);//获取原图信息
             $waterInfo=self::getImageInfo($water);//获取水印图片信息
             self::checkImage($imageInfo,$waterInfo);//比较水印图片与原图片的尺寸大小
             $imageRes=self::openAnyImage($image);//打开原图片
             $waterRes=self::openAnyImage($water);//打开水印图片
             $pos=$this->getPosition($position,$imageInfo,$waterInfo);//计算水印图片的位置
             imagecopymerge($imageRes, $waterRes, $pos["x"], $pos["y"], 0, 0, $waterInfo[0],$waterInfo[1], $tmd);//将水印图片贴上去
             $newName=$this->createNewName($image,$prefix);//获取新的文件名
             $newPath=rtrim($this->path,"/")."/".$newName;//获取新的路径
             $this->saveImage($imageRes,$newPath);//保存图片
             imagedestroy($imageRes);
             imagedestroy($waterRes);
         }
         else{
             die("图片不存在");
         }
    }
     static function getImageInfo($image){//获取图片信息
         $info=getimagesize($image);
         return $info;
     }
     static function checkImage($imageInfo,$waterInfo){//比较图片尺寸大小
         if($imageInfo[0]>$waterInfo[0] && $imageInfo[1]>$waterInfo[1]){
             return true;
         }
         else{
             die("水印图片的尺寸大于原图的尺寸");
         }
     }
     static function openAnyImage($image){//打开图片
         $mime=self::getImageInfo($image)["mime"];
         switch($mime){
             case "image/png":
                 $imageRes=imagecreatefrompng($image);
                 break;
             case "image/jpeg":
                 $imageRes=imagecreatefromjpeg($image);
                 break;
             case "image/gif":
                 $imageRes=imagecreatefromgif($image);
                 break;
             case "image/wbmp":
                 $imageRes=imagecreatefromwbmp($image);
                 break;
         }
         return $imageRes;
     }
     protected function getPosition($position,$imageInfo,$waterInfo){//计算水印图片位置
         switch($position){
             case "1":
                 $x=0;
                 $y=0;
                 break;
             case "2":
                 $x=($imageInfo[0]-$waterInfo[0])/2;
                 $y=0;
                 break;
             case "3":
                 $x=$imageInfo[0]-$waterInfo[0];
                 $y=0;
                 break;
             case "4":
                 $x=0;
                 $y=($imageInfo[1]-$waterInfo[1])/2;
                 break;
             case "5":
                 $x=($imageInfo[0]-$waterInfo[0])/2;
                 $y=($imageInfo[1]-$waterInfo[1])/2;
                 break;
             case "6":
                 $x=$imageInfo[0]-$waterInfo[0];
                 $y=($imageInfo[1]-$waterInfo[1])/2;
                 break;
             case "7":
                 $x=0;
                 $y=$imageInfo[1]-$waterInfo[1];
                 break;
             case "8":
                 $x=($imageInfo[0]-$waterInfo[0])/2;
                 $y=$imageInfo[1]-$waterInfo[1];
                 break;
             case "9":
                 $x=$imageInfo[0]-$waterInfo[0];
                 $y=$imageInfo[1]-$waterInfo[1];
                 break;
             case "0":
                 $x=mt_rand(0,$imageInfo[0]-$waterInfo[0]);
                 $y=mt_rand(0,$imageInfo[1]-$waterInfo[1]);
                 break;
         }
         $pos["x"]=$x;
         $pos["y"]=$y;
         return $pos;
     }
     protected function createNewName($image,$prefix){//获取新文件名
         if($this->isRandName){
             $newName=$prefix.uniqid().".".$this->type;
         }
         else{
             $newName=$prefix.pathinfo($image);
         }
         return $newName;
     }
     protected function saveImage($imageRes,$newPath){
         $func="image".$this->type;
         $func($imageRes,$newPath);
     }
 }
  
以上是 学习笔记图片水印、缩放处理 的全部内容, 来源链接: utcz.com/z/512450.html



