1. 云栖社区>
  2. PHP教程>
  3. 正文

向图片任意位置添加logo

作者:用户 来源:互联网 时间:2017-12-01 19:26:22

图片添加位置logo任意

向图片任意位置添加logo - 摘要: 本文讲的是向图片任意位置添加logo, 这个的原理是把logo‘画’图片的指定位置. 步骤如下: 1.获取图片和logo的基本信息 getimagesize 2.判断图片资源类型并创建对应图片资源 getPicType (自定义函数) 3.获取logo的位置坐标 getLoca

这个的原理是把logo‘画’图片的指定位置.
步骤如下:
1.获取图片和logo的基本信息
getimagesize

2.判断图片资源类型并创建对应图片资源
getPicType (自定义函数)

3.获取logo的位置坐标
getLocal (自定义函数)

4.把logo画上去
imagecopyresampled

5.输出图像
outputImage (自定义函数)

6.释放图片资源
imagedestroy

效果如图:
向图片任意位置添加logo

代码如下:

/** * @function 向图像中添加logo * @param $picname * @param $logo * @param int $local logo添加的位置:1:左上角,2:右上角,3:左下角,4:右下角,5:中上,6:中间,7:中下 *  @param string $pre * @return 返回一个新的图片名 */function addLogo($picname,$logo,$local="1",$pre="l_"){    $picInfo = getimagesize($picname); //获取图片的基本信息    $logoInfo = getimagesize($logo);   //获取logo的基本信息    $picW = $picInfo[0];//获取pic宽度    $picH = $picInfo[1];//获取pic高度    $logoW = $logoInfo[0]; //获取logo宽度    $logoH = $logoInfo[1]; //获取logo高度    //获取图片资源类型并创建对应图片资源    $picim = getPicType($picInfo[2],$picname);    $logoim = getPicType($logoInfo[2],$logo);    //把logo画上去    $XY = getLocal($local,$picW,$picH,$logoW,$logoH);//获取logo的位置坐标    imagecopyresampled($picim,$logoim,$XY[0],$XY[1],0,0,$logoW,$logoH,$logoW,$logoH);    //输出图像    $newPicName = outputImage($picname,$pre,$picim);    //释放图片资源    imagedestroy($picim);    imagedestroy($logoim);    return $newPicName;}/** * @function 获取对应位置的左上角坐标 * @param $local  位置 * @param $picW   图片宽 * @param $picH   图片高 * @param $logoW  logo宽 * @param $logoH  logo高 * @return 返回宽高数组 */function getLocal($local,$picW,$picH,$logoW,$logoH){    $XY = array();    switch($local)    {        case 1:            $XY = array(0,0);            break;        case 2:            $XY = array($picW-$logoW,0);            break;        case 3:            $XY = array(0,$picH-$logoH);            break;        case 4:            $XY = array($picW-$logoW,$picH-$logoH);            break;        case 5:            $XY = array($picW/2 - $logoW/2,0);            break;        case 6:            $XY = array($picW/2 - $logoW/2,$picH/2 - $logoH/2);            break;        case 7:            $XY = array($picW/2 - $logoW/2,$picH-$logoH);            break;        default:            die("不支持这个位置的logo添加");            break;    }    return $XY;}/** * function 判断并返回图片的类型(以资源方式返回) * @param int $type 图片类型 * @param string $picname 图片名字 * @return 返回对应图片资源 */function getPicType($type,$picname){    $im=null;    switch($type)    {        case 1:  //GIF            $im = imagecreatefromgif($picname);            break;        case 2:  //JPG            $im = imagecreatefromjpeg($picname);            break;        case 3:  //PNG            $im = imagecreatefrompng($picname);            break;        case 4:  //BMP            $im = imagecreatefromwbmp($picname);            break;        default:            die("不认识图片类型");            break;    }    return $im;}/** * function 输出图像 * @param string $picname 图片名字 * @param string $pre 新图片名前缀 * @param resourse $nim 要输出的图像资源 * @return 返回新的图片名 */function outputImage($picname,$pre,$nim){    $info = getimagesize($picname);    $picInfo = pathInfo($picname);    $newPicName = $picInfo['dirname'].'/'.$pre.$picInfo['basename'];//输出文件的路径    switch($info[2])    {        case 1:            imagegif($nim,$newPicName);            break;        case 2:            imagejpeg($nim,$newPicName);            break;        case 3:            imagepng($nim,$newPicName);            break;        case 4:            imagewbmp($nim,$newPicName);            break;    }    return $newPicName;}

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索图片 , 添加 , 位置 , logo 任意 ,以便于您获取更多的相关知识。

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

云服务器9.9元/月,大学必备