php 给图片加水印
2020-12-13 02:29
标签:des class code ext color c 昨天下午同事问我一个php的问题,就是给图片加水印,php我也一知半解,网上资料找了一通,自己就写了一个加水印的php类。 具体代码如下: 上面代码有一些纰漏: 1,水印生成的位置,比如说可以是中间,右上角,右下角,等等。需要完善。 2,如果是加文字水印,文字水印的位置怎么计算?计算每个文字的宽度和高度?这个还有待完善。 3,异常的处理。php里面处理异常,我貌似还没有接触过。 上面代码调用方式: php 给图片加水印,搜素材,soscw.com php 给图片加水印 标签:des class code ext color c 原文地址:http://www.cnblogs.com/tony-jingzhou/p/3718574.html
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);
}
}?>
include_once "water.class.php";
$water=new
WaterGener();
$water->buildWaterImage("girl.jpg","logo.gif","demo1.jpg");
$water->buildWaterText("girl.jpg","开源中国");
?>