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

编程

<?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

回到顶部