欢迎光临建站营销网站,一站式轻松搭建网站

快速平台建站公司

自助建站搭建平台系统,企业快速建站平台

php文字水印 图片水印 圆形微信头像水印

作者:jcmp      发布时间:2021-04-24      浏览量:0
一. 看效果(需求是将用户的微信头像变成

一. 看效果(需求是将用户的微信头像变成水印打在背景图上)

二.看代码

//准备绘图元素

$location= array(); //坐标 可写在配置文件里。

$headImg = $userInfo['headimgurl']; //头像。

$time= date("Y/m/d",time()); //日期。

//相关证书背景图存在,则以为背景,重新合成图(打上头像、日期)。

$BG_URL= '/bg.jpg';

$imageUrl= $this->createImg ($BG_URL, $headImg, $time,$FONT, $location);

private function createImg($source, $text1, $text2, $font ,$L) {

$file_root = '/tmp/';

$file_name = md5 ( $source . $text1 . $text2) . '.jpg';

if(!file_exists ($source ) or !file_exists ($font ) ){

die("资源不存在!");

}

if(@!file_get_contents($file_root.$file_name)){

$main = imagecreatefromjpeg ( $source );

$w = imagesx ( $main );

$h = imagesy ( $main );

$target = imagecreatetruecolor ( $width, $height );

$white = imagecolorallocate ( $target, 255, 255, 255 );

imagefill ( $target, 0, 0, $white );

imagecopyresampled ( $target, $main, 0, 0, 0, 0, $w, $h, $w, $h );

$fontColor = imagecolorallocate ( $target, 22,172,169 ); //字的RGB颜色。

//打上文字

imagettftext ( $target, n,n,n,n, $fontColor, $font, $text2 );

//获取头像图(将图像存在本地)

$head_file = 'tx'.md5 ($text1) . '.jpg';

$localPath = $file_root.$head_file;

//如文件不存在,将远程文件下载到本地

if (!file_exists($localPath)) {

$image = $this->getImage($text1); //获取远程文件,用curl请求。

file_put_contents($localPath,$image);

}

$localPath = $this->circular($localPath,$file_root); //将头像处理成圆形。

$localPath = imagecreatefromstring(file_get_contents($localPath));

//打印水印

imagecopy ( $target, $localPath,n,n,n,n,n,n);

imagejpeg ( $target, $file_root.$file_name, 95 ); //输出合成的新图象到文件。

imagedestroy ( $main );

imagedestroy ( $target );

}

//同步图片到专门存储图片的服务器(这个具体看公司业务)

$file_path =$this->synchronou($file_root.$file_name);

$data = json_decode($file_path,true);

if ($data['ret_code']==1) {

return "www.xxx.com/".$data['filename'];

}

}

//下载远程图片

private function getImage($url ){

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_ENCODING, "");

curl_setopt($ch, CURLOPT_HEADER, 0);

$output = curl_exec($ch);

curl_close($ch);

return $output;

}

三.小结

主要用到的是GD库知识,不清楚的地方可去看官方手册,注意函数参数。

获取远程图片资源使用curl,比如获取微信头像存到本地curl不到1秒时间,

使用file_get_contents()竟然要花费18秒。