PHP gd库对图片进行等比缩放和添加Logo水印
2017-05-16 22:56:56
•
阅读
打赏
php的gd库常用的图片操作,进行图片上传时,经常需要对图片进行等比缩放或添加水印
phpinfo()函数查看是否安装了gd库
生成图片验证码
验证码:http://www.yuqingqi.com/phpjiaocheng/538.html
添加Logo水印
/**
* 给一张图片添加上一个logo图片水印(以保存的方式实现)
* @param string $pic 被处理图片源
* @param string $logo 水印图片
* @param string $pre 处理后图片名的前缀名
* @return String 返回后的图片名称(带路径)
*/
function imageUpdateLogo($pic, $logo, $pre = "n_")
{
//获取图片源的基本信息
$picinfo = getimageSize($pic);
//获取logo图片的基本信息
$logoinfo = getimageSize($logo);
//根据图片类型创建出对应的图片源
switch ($picinfo[2]) {
case 1: //gif
$im = imagecreatefromgif($pic);
break;
case 2: //jpg
$im = imagecreatefromjpeg($pic);
break;
case 3: //png
$im = imagecreatefrompng($pic);
break;
default:
die("图片类型错误!");
}
//根据logo图片类型创建出对应的图片源
switch ($logoinfo[2]) {
case 1: //gif
$logoim = imagecreatefromgif($logo);
break;
case 2: //jpg
$logoim = imagecreatefromjpeg($logo);
break;
case 3: //png
$logoim = imagecreatefrompng($logo);
break;
default:
die("logo图片类型错误!");
}
//执行图片水印处理
imagecopyresampled($im, $logoim, $picinfo[0] - $logoinfo[0],
$picinfo[1] - $logoinfo[1], 0, 0, $logoinfo[0],
$logoinfo[1], $logoinfo[0], $logoinfo[1]);
//输出图像(根据源图像的类型,输出为对应的类型)
$pic1 = pathinfo($pic);
//解析源图像的名字和路径信息
$newpic = $pic1["dirname"] . "/" . $pre . $pic1["basename"];
switch ($picinfo[2]) {
case 1:
imagegif($im, $newpic);
break;
case 2:
imagejpeg($im, $newpic);
break;
case 3:
imagepng($im, $newpic);
break;
}
//释放图片资源
imagedestroy($im);
imagedestroy($logoim);
//返回结果
return $newpic;
}
//测试
echo imageUpdateLogo("./images/aa.jpg","./images/a1.png");
图片的等比缩放
/**
* 实现突破的等比缩放函数(以保存的方式实现)
* @param string $pic 被缩放的图片源
* @param int $rex 缩放后图片的最大宽度
* @param int $rey 缩放后图片的最大高度
* @param string $pre 缩放后图片名的前缀名
* @return string 返回后的图片名称(带路径)
*/
function imageUpdateSize($pic, $rex = 100, $rey = 100, $pre = "s_")
{
$info = getimageSize($pic); //获取图片的基本信息
$w = $info[0]; //获取宽度
$h = $info[1]; //获取高度
//获取图片的类型并为此创建对应图片资源
switch ($info[2]) {
case 1: //gif
$im = imagecreatefromgif($pic);
break;
case 2: //jpg
$im = imagecreatefromjpeg($pic);
break;
case 3: //png
$im = imagecreatefrompng($pic);
break;
default:
die("图片类型错误!");
}
//计算缩放比例
if (($rex / $w) > ($rey / $h)) {
$b = $rey / $h;
} else {
$b = $rex / $w;
}
//计算出缩放后的尺寸
$nw = floor($w * $b);
$nh = floor($h * $b);
//创建一个新的图像(目标图像)
$nim = imagecreatetruecolor($nw, $nh);
//执行等比缩放
imagecopyresampled($nim, $im, 0, 0, 0, 0, $nw, $nh, $w, $h);
//输出图像(根据源图像的类型,输出为对应的类型)
$picinfo = pathinfo($pic);
//解析源图像的名字和路径信息
$newpic = $picinfo["dirname"] . "/" . $pre . $picinfo["basename"];
switch ($info[2]) {
case 1:
imagegif($nim, $newpic);
break;
case 2:
imagejpeg($nim, $newpic);
break;
case 3:
imagepng($nim, $newpic);
break;
}
//释放图片资源
imagedestroy($im);
imagedestroy($nim);
//返回结果
return $newpic;
}
//测试
echo imageUpdateSize("./images/aa.jpg",200,200,"a1_");
以上就是对图片进行等比缩放或添加水印的方法的全部内容,希望大家有所学习。
imagecopyresampled()函数说明
相关推荐
深度学习 -- 损失函数
深度残差网络(Deep Residual Networks (ResNets))
深度学习 -- 激活函数
神经网络训练 -- 调整学习速率
生成对抗网络(GAN)改进与发展
生成对抗网络(GAN)优点与缺点
生成对抗网络(GAN)的训练
生成对抗网络(GAN)基本原理
生成模型与判别模型