牛骨文教育服务平台(让学习变的简单)
博文笔记

php 水印文字

创建时间:2015-12-26 投稿人: 浏览次数:434

不经意间成为了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而来,具体来源补课追踪,加一改良,留待后续完善

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。