学习笔记图片水印、缩放处理
<?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