您好,欢迎访问一九零五行业门户网

PHP图片的等比缩放和增加Logo水印详细代码和注释

百度 “美日汇”/** * 等比缩放函数(以保存的方式实现) * @param string $picname 被缩放的处理图片源 * @param int $maxx 缩放后图片的最大宽度 * @param int $maxy 缩放后图片的最大高度 * @param string $pre 缩放后图片名的前缀名 * @return string 返回后的图片名称(带路径),如a.jpg=>s_a.jpg */function imagenewageupdatesize($picname,$maxx=100,$maxy=100,$pre=s_){ $imagenewageinfo = getimagenewagesize($picname); //获取图片的基本信息 $w = $imagenewageinfo[0];//获取宽度 $h = $imagenewageinfo[1];//获取高度 //获取图片的类型并为此创建对应图片资源 switch($imagenewageinfo[2]){ case 1: //gif $imagenew = imagenewagecreatefromgif($picname); break; case 2: //jpg $imagenew = imagenewagecreatefromjpeg($picname); break; case 3: //png $imagenew = imagenewagecreatefrompng($picname); break; default: die(图片类型错误!); } //计算缩放比例 if(($maxx/$w)>($maxy/$h)){ $b = $maxy/$h; }else{ $b = $maxx/$w; } //计算出缩放后的尺寸 $nw = floor($w*$b); $nh = floor($h*$b); //创建一个新的图像源(目标图像) $nimagenew = imagenewagecreatetruecolor($nw,$nh); //执行等比缩放 imagenewagecopyresampled($nimagenew,$imagenew,0,0,0,0,$nw,$nh,$w,$h); //输出图像(根据源图像的类型,输出为对应的类型) $picimagenewageinfo = pathimagenewageinfo($picname);//解析源图像的名字和路径信息 $newpicname= $picimagenewageinfo[dirname]./.$pre.$picimagenewageinfo[basename]; switch($imagenewageinfo[2]){ case 1: imagenewagegif($nimagenew,$newpicname); break; case 2: imagenewagejpeg($nimagenew,$newpicname); break; case 3: imagenewagepng($nimagenew,$newpicname); break; } //释放图片资源 imagenewagedestroy($imagenew); imagenewagedestroy($nimagenew); //返回结果 return $newpicname;}//调用echo imagenewageupdatesize(./imagenewages/leyangjun.jpg,400,400,ss_); //你自己要添加的图片/** * 为一张图片添加上一个logo图片水印(以保存的方式实现) * @param string $picname 被处理图片源 * @param string $logo 水印图片 * @param string $pre 处理后图片名的前缀名 * @return string 返回后的图片名称(带路径),如a.jpg=>n_a.jpg */function imagenewageupdatelogo($picname,$logo,$pre=n_){ $picnameimagenewageinfo = getimagenewagesize($picname); //获取图片源的基本信息 $logoimagenewageinfo = getimagenewagesize($logo); //获取logo图片的基本信息 //var_dump($logoimagenewageinfo); //根据图片类型创建出对应的图片源 switch($picnameimagenewageinfo[2]){ case 1: //gif $imagenew = imagenewagecreatefromgif($picname); break; case 2: //jpg $imagenew = imagenewagecreatefromjpeg($picname); break; case 3: //png $imagenew = imagenewagecreatefrompng($picname); break; default: die(图片类型错误!); } //根据logo图片类型创建出对应的图片源 switch($logoimagenewageinfo[2]){ case 1: //gif $logoimagenew = imagenewagecreatefromgif($logo); break; case 2: //jpg $logoimagenew = imagenewagecreatefromjpeg($logo); break; case 3: //png $logoimagenew = imagenewagecreatefrompng($logo); break; default: die(logo图片类型错误!); } //执行图片水印处理 源图的高-logo图的高 源图的宽-logo图的宽 imagenewagecopyresampled($imagenew,$logoimagenew,$picnameimagenewageinfo[0]-$logoimagenewageinfo[0],$picnameimagenewageinfo[1]-$logoimagenewageinfo[1],0,0,$logoimagenewageinfo[0],$logoimagenewageinfo[1],$logoimagenewageinfo[0],$logoimagenewageinfo[1]); //输出图像(根据源图像的类型,输出为对应的类型) $picimagenewageinfo = pathimagenewageinfo($picname);//解析源图像的名字和路径信息 $newpicname= $picimagenewageinfo[dirname]./.$pre.$picimagenewageinfo[basename]; switch($picnameimagenewageinfo[2]){ case 1: imagenewagegif($imagenew,$newpicname); break; case 2: imagenewagejpeg($imagenew,$newpicname); break; case 3: imagenewagepng($imagenew,$newpicname); break; } //释放图片资源 imagenewagedestroy($imagenew); imagenewagedestroy($logoimagenew); //返回结果 return $newpicname;}//测试//echo imagenewageupdatelogo(./imagenewages/leyangjun.jpg,./imagenewages/logo.png); //对应添加你的图片,和你的logo水印图片 ok
其它类似信息

推荐信息