当前位置: 移动技术网 > IT编程>开发语言>PHP > ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整

ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整

2018年07月13日  | 移动技术网IT编程  | 我要评论

本文实例讲述了thinkphp水印功能实现修复png透明水印并增加jpeg图片质量可调整的方法。分享给大家供大家参考。具体实现方法如下:

tp自带有图片类,有给图片加水印的功能。
这里完善了:
1. png水印透明
2. 加水印后质量调整(只限于jpg格式)
代码如下:

复制代码 代码如下:
/**
+———————————————————-
* 为图片添加水印
+———————————————————-
* @static public
+———————————————————-
* @param string $source 原文件名
* @param string $water 水印图片
* @param string $$savename 添加水印后的图片名
* @param string $alpha 水印的透明度
+———————————————————-
* @return string
+———————————————————-
* @throws thinkexecption
+———————————————————-
*/
static public function water($source, $water, $savename=null, $alpha=80) {
//检查文件是否存在
if (!file_exists($source) || !file_exists($water))
return false;

//图片信息
$sinfo = self::getimageinfo($source);
$winfo = self::getimageinfo($water);

//如果图片小于水印图片,不生成图片
if ($sinfo["width"] < $winfo["width"] || $sinfo['height'] < $winfo['height'])
return false;

//建立图像
$screatefun = "imagecreatefrom" . $sinfo['type'];
$simage = $screatefun($source);
$wcreatefun = "imagecreatefrom" . $winfo['type'];
$wimage = $wcreatefun($water);

//设定图像的混色模式
imagealphablending($wimage, true);

//图像位置,默认为右下角右对齐
$posy = $sinfo["height"] – $winfo["height"];
$posx = $sinfo["width"] – $winfo["width"];

/* 为了保持png的透明效果 使用imagecopy 此处为修改过的*/
imagecopy($simage, $wimage, $posx, $posy, 0, 0, $winfo['width'], $winfo['height']);
//生成混合图像,这是系统的
// imagecopymerge($simage, $wimage, $posx, $posy, 0, 0, $winfo['width'],$winfo['height'], $alpha);
//输出图像
$imagefun = 'image' . $sinfo['type'];
//如果没有给出保存文件名,默认为原图像名
if (!$savename) {
$savename = $source;
@unlink($source);
}
//保存图像,如果是jpg,则设置一下水印质量 此处为修改过的:
if ($sinfo['type'] == "jpg" || $sinfo['type'] == "jpeg") {
imagejpeg($simage, $savename, 90);//第3个参数即使质量大小,因为只有imagejpeg支持这个参数
} else {
$imagefun($simage, $savename);
}
//$imagefun($simage, $savename);//这是系统的
imagedestroy($simage);
}

希望本文所述对大家的thinkphp框架程序设计有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网