1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > php批量添加水印图片 PHP图片批量添加水印

php批量添加水印图片 PHP图片批量添加水印

时间:2022-05-30 13:23:00

相关推荐

php批量添加水印图片 PHP图片批量添加水印

PHP图片批量添加水印

Jesse

-08-08 19:57:00

894

最近在做根据用户信息动态生成证书,遇到了很多问题,不过也都一一解决了。So,记录下来

主要有:不能正确读取图片信息,汉字水印字体,图片下载、打印,FTP上传等问题

该方法可以同时添加多个文字水印和图片水印。

主要原理是:用户上传头像,提交信息,从后台拿到模板图片地址,在根据模板要填的空计算好坐标,写到对应的位置,然后保存到本地临时目录,再上传至FTP或者七牛云等图床。/**

* 图片添加水印(包括文字水印和图片水印)

* @param string $img 来源图片

* @param string $filename 文件名

* @param array $waterWordConfig 文字水印配置

* @param array $waterImgConfig 图片水印配置

* @return string 临时存放图片地址

*

* $waterconfig = array(

* '0' => array(

* 'text' => '张三丰', //水印文字

* 'x' => '90', //水印坐标

* 'y' => '295',

* 'size' => '22', //水印文字大小

* 'rgb' => array('46','46','46','-1'), //水印文字颜色

* 'angle' => 0, //水印文字颜色旋转角度

* 'fontfile' => "./SIMKAI.TTF" //水印文字字体

* )

* )

*

* $imgconfig = array(

* '0' => array(

* 'src_img' => './img/userhead.jpg', //水印图片路径

* 'dst_x' => '775', //目标图像开始 x 坐标,x,y同为 0 则从左上角开始

* 'dst_y' => '75',

* 'src_x' => '0', //拷贝图像开始 x 坐标

* 'src_y' => '0',

* 'pct' => '100' //图像合并程度,取值 0-100 ,当 pct=0 时,实际上什么也没做,反之完全合并。

* )

* );

*/

function imgFontWater($img,$filename,$waterWordConfig,$waterImgConfig=array()){

if (!$img) {

return false;

}

//获取图片信息

$info = getimagesize($img);

//获取图片扩展名

$type = image_type_to_extension($info[2],false);

//动态的把图片导入内存中

$image = imagecreatefromstring(file_get_contents($img));

if ($waterWordConfig) {

foreach ($waterWordConfig as $config) {

//指定字体颜色

$color = imagecolorallocate($image,$config['rgb'][0],$config['rgb'][1],$config['rgb'][2]);

//给图片添加文字

imagefttext($image, $config['size'], $config['angle'], $config['x'], $config['y'], $color, $config['fontfile'], $config['text']);

}

}

$src_img_arr = array();

if ($waterImgConfig) {

foreach ($waterImgConfig as $imgconfig) {

$src_img_arr[] = $src_img = imagecreatefromstring(file_get_contents($imgconfig['src_img']));

list($src_w, $src_h) = getimagesize($imgconfig['src_img']);

imagecopymerge($image, $src_img, $imgconfig['dst_x'], $imgconfig['dst_y'], $imgconfig['src_x'], $imgconfig['src_y'], $src_w, $src_h, $imgconfig['pct']);

}

}

//指定输入类型 header('Content-type:'.$info['mime']);

//动态的输出图片到浏览器中

$func = "image{$type}";

$result = $func($image,"/tmp/{$filename}.{$type}");

//销毁图片

imagedestroy($image);

if ($waterImgConfig) {

foreach ($src_img_arr as $srcimg) {

imagedestroy($srcimg);

}

}

return $result?"/tmp/{$filename}.{$type}":$result;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。