天天看点

php 水印文字php 水印文字 水印图片

php 水印文字 水印图片

不经意间成为了php coder,边学边做

因为项目需要用用到水印文字 ,水印图片自己就整理了一下,留作记录,便于日后学习

$text_list                 = array();
//一次性加多个水印文字
$text_list[]['dst_path']   = "img/1.png";//水印底图路径
$text_list[]['size']      =;//字体大小
$text_list[]['angle']         =;//水印文字旋转角度
$text_list[]['x']             =;//水印文字x坐标
$text_list[]['y']             =;//水印文字y坐标
$text_list[]['color']         =array(,,); //水印文字颜色
$text_list[]['font_file']  = "1.ttf"; //水印文字用到的字体文件
$text_list[]['content']   = "晨露微凉"; //水印内容

$text_list[]['dst_path']   = "img/1.png";//水印底图路径
$text_list[]['size']      =;//字体大小
$text_list[]['angle']         =;//水印文字旋转角度
$text_list[]['x']             =;//水印文字x坐标
$text_list[]['y']             =;//水印文字y坐标
$text_list[]['color']         =array(,,); //水印文字颜色
$text_list[]['font_file']  = "1.ttf"; //水印文字用到的字体文件
$text_list[]['content']   = "jokechat"; //水印内容


$text_list['avatar']['dst_path']   ="img/1.png";//底图路径

$text_list['avatar']['src_path']   ="img/avatar.jpg";//资源图路径
$text_list['avatar']['x']              =;
$text_list['avatar']['y']              =;
$text_list['avatar']['w']              =;
$text_list['avatar']['h']              =;   
$text_list['avatar']['opacity']    =;  //资源图片透明度


water_text($text_list);

/*给图片加文字水印的方法*/
function water_text($text_list) 
{
    $dst_path = $text_list[]['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'][], $text['color'][], $text['color'][]);
            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, , , , , $text_list['avatar']['w'], $text_list['avatar']['h'], $src_info [], $src_info [] );
    // copy图片并且重置图片大小

    // 将水印图片复制到目标图片上,最后个参数是设置透明度,可以半透明效果
    imagecopymerge ( $dst, $image, $text_list['avatar']['x'] , $text_list['avatar']['y'] , , , $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  :
            //GIF
            header("content-type:image/gif");
            imagegif($dst, $name . ".gif");
//          /imagegif($dst);
            break;
        case  :
            //JPG
            header("content-type:image/jpeg");

            imagejpeg($dst, "./inviter/".$name . ".jpg");
            //imagejpeg($dst);
            break;
        case  :
            //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而来,具体来源补课追踪,加一改良,留待后续完善