php 水印文字
不经意间成为了php coder,边学边做
因为项目需要用用到水印文字 ,水印图片自己就整理了一下,留作记录,便于日后学习
$text_list = array();
//一次性加多个水印文字
$text_list[0]["dst_path"] = "img/1.png";//水印底图路径
$text_list[0]["size"] =20;//字体大小
$text_list[0]["angle"] =0;//水印文字旋转角度
$text_list[0]["x"] =100;//水印文字x坐标
$text_list[0]["y"] =200;//水印文字y坐标
$text_list[0]["color"] =array(255,0,0); //水印文字颜色
$text_list[0]["font_file"] = "1.ttf"; //水印文字用到的字体文件
$text_list[0]["content"] = "晨露微凉"; //水印内容
$text_list[1]["dst_path"] = "img/1.png";//水印底图路径
$text_list[1]["size"] =20;//字体大小
$text_list[1]["angle"] =0;//水印文字旋转角度
$text_list[1]["x"] =222;//水印文字x坐标
$text_list[1]["y"] =300;//水印文字y坐标
$text_list[1]["color"] =array(255,255,0); //水印文字颜色
$text_list[1]["font_file"] = "1.ttf"; //水印文字用到的字体文件
$text_list[1]["content"] = "jokechat"; //水印内容
$text_list["avatar"]["dst_path"] ="img/1.png";//底图路径
$text_list["avatar"]["src_path"] ="img/avatar.jpg";//资源图路径
$text_list["avatar"]["x"] =100;
$text_list["avatar"]["y"] =200;
$text_list["avatar"]["w"] =100;
$text_list["avatar"]["h"] =100;
$text_list["avatar"]["opacity"] =100; //资源图片透明度
water_text($text_list);
/*给图片加文字水印的方法*/
function water_text($text_list)
{
$dst_path = $text_list[0]["dst_path"];
$dst = imagecreatefromstring(file_get_contents($dst_path));
/*imagecreatefromstring()--从字符串中的图像流新建一个图像,返回一个图像标示符,其表达了从给定字符串得来的图像
图像格式将自动监测,只要php支持jpeg,png,gif,wbmp,gd2.*/
foreach($text_list as $key=> $text)
{
//如果是数字就处理一下 数字表示批量水印文字
if(is_numeric($key))
{
$black = imagecolorallocate($dst, $text["color"][0], $text["color"][1], $text["color"][2]);
imagefttext($dst, $text["size"], $text["angle"], $text["x"], $text["y"], $black, $text["font_file"], $text["content"]);
}
}
//获取图片原始信息
$src_info = getimagesize ( $text_list["avatar"]["src_path"] );
// 创建图片的实例
$src = imagecreatefromstring ( file_get_contents ( $text_list["avatar"]["src_path"] ) );
// 创建一个彩色的底图
$image = imagecreatetruecolor ( $text_list["avatar"]["w"] , $text_list["avatar"]["h"] );
// 设定水印图片大小
imagecopyresized ( $image, $src, 0, 0, 0, 0, $text_list["avatar"]["w"], $text_list["avatar"]["h"], $src_info [0], $src_info [1] );
// copy图片并且重置图片大小
// 将水印图片复制到目标图片上,最后个参数是设置透明度,可以半透明效果
imagecopymerge ( $dst, $image, $text_list["avatar"]["x"] , $text_list["avatar"]["y"] , 0, 0, $text_list["avatar"]["w"] , $text_list["avatar"]["h"] , $text_list["avatar"]["opacity"] );
/*imagefttext($img,$size,$angle,$x,$y,$color,$fontfile,$text)
$img由图像创建函数返回的图像资源
size要使用的水印的字体大小
angle(角度)文字的倾斜角度,如果是0度代表文字从左往右,如果是90度代表从上往下
x,y水印文字的第一个文字的起始位置
color是水印文字的颜色
fontfile,你希望使用truetype字体的路径*/
list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path);
/*list(mixed $varname[,mixed $......])--把数组中的值赋给一些变量
像array()一样,这不是真正的函数,而是语言结构,List()用一步操作给一组变量进行赋值*/
/*getimagesize()能获取到什么信息?
getimagesize函数会返回图像的所有信息,包括大小,类型等等*/
//存储的文件名称 如果是windows系统存储中文文件名称需要转换为GBK编码
$name =iconv("UTF-8", "GBK", "晨露微凉");
switch($dst_type) {
case 1 :
//GIF
header("content-type:image/gif");
imagegif($dst, $name . ".gif");
// /imagegif($dst);
break;
case 2 :
//JPG
header("content-type:image/jpeg");
imagejpeg($dst, "./inviter/".$name . ".jpg");
//imagejpeg($dst);
break;
case 3 :
//PNG
header("content-type:image/png");
imagepng($dst, "./inviter/".$name . ".png");
//imagepng($dst);
break;
default :
break;
/*imagepng--以PNG格式将图像输出到浏览器或文件
imagepng()将GD图像流(image)以png格式输出到标注输出(通常为浏览器),或者如果用filename给出了文件名则将其输出到文件*/
}
imagedestroy($dst);
}
从网上copy而来,具体来源补课追踪,加一改良,留待后续完善
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: linux vps下mysql cpu占用过高解决办法
- 下一篇: 把一个文件到追加另外一个文件上