• 技术文章 >php教程 >php手册

    php上传图片加水印(图片水印,文字水印)

    2016-06-13 09:48:12原创690
    php上传图片加水印(图片水印,文字水印) 这是一款比较完整理的在用户上传图片时就自动给图片增加上水印,这款增加水印功能可以增加文字水印与图片水印哦。

    php教程上传图片加水印(图片水印,文字水印)
    这是一款比较完整理的在用户上传图片时就自动给图片增加上水印,这款增加水印功能可以增加文字水印与图片水印哦。

    /*
    * created on 2010-6-21
    *
    * the class for control image
    *
    * made by s71ence
    *
    * @$img_path 图片路径
    * @$is_auto_reduce 图片是否自动按照大小等级压缩 1是
    * @$is_appoint 是否手动进行压缩或放大 1是
    * @$multiple 手动指定压缩/放大比例
    * @$is_water_str 是否加水印文字 1是
    * @$water_str 水印文字
    * @$is_watermark 是否加水印图片 1是
    * @$logo_path 水印图片路径
    * @$is_display 是否显示图片 1是
    * @$is_create 是否生成压缩后的图片 1是
    *
    * 注:
    * 1.生成新图时不可显示图片,即$isdisplay和$iscreate不可同时置为1
    * 2.当图片宽或高小于1000时,需手动设置压缩比例进行压缩
    * 3.不建议启用水印,若要启用,建议原图片大小最好在1000以内
    * 4.水印文字中不可含有中文
    * 5.新生成的图片在原目录文件中,支持n个层级
    */

    class image_control
    {
    private $img_path;
    private $is_auto_reduce;
    private $is_appoint;
    private $multiple;
    private $is_water_str;
    private $water_str;
    private $is_watermark;
    private $logo_path;
    private $is_display;
    private $is_create;

    function __construct($img_path,$is_auto_reduce,$is_appoint,$multiple,$is_water_str,$water_str,$is_watermark,$logo_path,$is_display,$is_create)
    {
    $this->img_path=$img_path;
    $this->is_auto_reduce=$is_auto_reduce;
    $this->is_appoint=$is_appoint;
    $this->multiple=$multiple;
    $this->is_water_str=$is_water_str;
    $this->water_str=$water_str;
    $this->is_watermark=$is_watermark;
    $this->logo_path=$logo_path;
    $this->is_display=$is_display;
    $this->is_create=$is_create;
    }

    function img_control()
    {
    //获取原图
    $img_info=getimagesize($this->img_path);

    switch($img_info[2])
    {
    case 1:
    $img_get=@imagecreatefromgif($this->img_path);
    break;

    case 2:
    $img_get=@imagecreatefromjpeg($this->img_path);
    break;

    case 3:
    $img_get=@imagecreatefrompng($this->img_path);
    break;
    }

    //文字水印
    if($this->is_water_str==1)
    {
    //imagettftext(原图,文字大小,文字旋转,水印起始坐标x,水印起始坐标y,$te,'simhei.ttf',$str);
    $te=imagecolorallocate($img_get,255,255,255);
    $str=iconv("gbk","utf-8",$this->water_str);//水印文字
    imagettftext($img_get,16,0,$img_info[0]-200,$img_info[1]-20,$te,'msyh.ttf',$str);
    }

    //图片水印
    if($this->is_watermark==1)
    {
    //水印图片处理
    $logo_info=getimagesize($this->logo_path);

    switch($logo_info[2])
    {
    case 1:
    $logo=@imagecreatefromgif($this->logo_path);
    break;

    case 2:
    $logo=@imagecreatefromjpeg($this->logo_path);
    break;

    case 3:
    $logo=@imagecreatefrompng($this->logo_path);
    break;
    }

    //水印logo图片
    //函数说明:imagecopy(原图,水印图片,水印坐标x,水印坐标y,水印图片开始坐标x,水印图片开始坐标y,'水印图片宽','水印图片高');
    imagecopy($img_get,$logo,0,0,0,0,$logo_info[0],$logo_info[1]);
    }

    //自动图片压缩 按图片大小分级自动压缩
    //imagecopyresized(画布,原图,画布起始x坐标,画布起始y坐标,原图起始x坐标,原图起始x坐标,新图片宽,新图片高,原图片宽,原图片高);
    if($this->is_auto_reduce==1)
    {
    if($img_info[0]>=3000 || $img_info[1]>=3000)
    {
    $new_image_get=imagecreatetruecolor($img_info[0]*0.03,$img_info[1]*0.03);//生成画布
    imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.03,$img_info[1]*0.03,$img_info[0],$img_info[1]);
    }
    else if($img_info[0]>=2500 || $img_info[1]>=2500)
    {
    $new_image_get=imagecreatetruecolor($img_info[0]*0.04,$img_info[1]*0.04);
    imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.04,$img_info[1]*0.04,$img_info[0],$img_info[1]);
    }
    else if($img_info[0]>=2000 || $img_info[1]>=2000)
    {
    $new_image_get=imagecreatetruecolor($img_info[0]*0.05,$img_info[1]*0.05);
    imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.05,$img_info[1]*0.05,$img_info[0],$img_info[1]);
    }
    else if($img_info[0]>=1500 || $img_info[1]>=1500)
    {
    $new_image_get=imagecreatetruecolor($img_info[0]*0.08,$img_info[1]*0.08);
    imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.08,$img_info[1]*0.08,$img_info[0],$img_info[1]);
    }
    else if($img_info[0]>=1000 || $img_info[1]>=1000)
    {
    $new_image_get=imagecreatetruecolor($img_info[0]*0.1,$img_info[1]*0.1);
    imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.1,$img_info[1]*0.1,$img_info[0],$img_info[1]);
    }
    else if($img_info[0]>=500 || $img_info[1]>=500)
    {
    $new_image_get=imagecreatetruecolor($img_info[0]*0.2,$img_info[1]*0.2);
    imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.2,$img_info[1]*0.2,$img_info[0],$img_info[1]);
    }
    else if($img_info[0]>=300 || $img_info[1]>=300)
    {
    $new_image_get=imagecreatetruecolor($img_info[0]*0.3,$img_info[1]*0.3);
    imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*0.3,$img_info[1]*0.3,$img_info[0],$img_info[1]);
    }
    else
    {
    $new_image_get=imagecreatetruecolor($img_info[0]*1,$img_info[1]*1);
    imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*1,$img_info[1]*1,$img_info[0],$img_info[1]);
    }
    }

    //手动图片压缩
    //imagecopyresized(画布,原图,画布起始x坐标,画布起始y坐标,原图起始x坐标,原图起始x坐标,新图片宽,新图片高,原图片宽,原图片高);
    if($this->is_appoint)
    {
    $new_image_get=imagecreatetruecolor($img_info[0]*$this->multiple,$img_info[1]*$this->multiple);//生成画布
    imagecopyresized($new_image_get,$img_get,0,0,0,0,$img_info[0]*$this->multiple,$img_info[1]*$this->multiple,$img_info[0],$img_info[1]);
    }

    //图像输出
    if($this->is_display==1)
    {
    header("content-type: image/jpeg");
    return imagejpeg($new_image_get);
    }

    //新图像生成
    if($this->is_create==1)
    {
    $new_name=explode("//m.sbmmt.com/m/",$this->img_path);
    $new_name_string="";

    for($i=0;$i {
    $new_name_string.=$new_name[$i]."//m.sbmmt.com/m/";
    }

    $new_img_path=$new_name_string."new".$new_name[$i];

    if(imagejpeg($new_image_get,$new_img_path) && imagejpeg($img_get,$this->img_path))
    {
    setcookie("img_new_path", $new_img_path);
    //return "图片生成成功!
    新图:".$new_img_path."
    原图:".$this->img_path;
    }
    else
    {
    return "图片生成失败,请检查配置是否正确!";
    }
    }
    }

    function __desctruct()
    {
    //clear
    }
    }

    //调用方法

    /* $img_path="../users/user_photo/t2.jpg"; //被操作的图片路径
    $is_auto_reduce=1;//图片是否自动按照大小等级压缩 1是
    $is_appoint=0;//是否手动进行压缩 1是
    $multiple=0.5;//手动指定压缩比例
    $is_water_str=0;//是否加水印文字
    $water_str="www.bKjia.c0m";//水印文字
    $is_watermark=0;//是否加水印图片 1是
    $logo_path="../image/logo_about.gif";//水印图片路径
    $is_display=0;//是否显示图片 1是
    $is_create=1;//是否生成压缩后的图片 1是
    $img=new image_control($img_path,$is_auto_reduce,$is_appoint,$multiple,$is_water_str,$water_str,$is_watermark,$logo_path,$is_display,$is_create);
    echo $img->img_control();*/

    php入门到就业线上直播课:查看学习

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    上一篇:PHP获得毫秒的时间microtime()用法 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• PHP用代码实现文件下载• php实现refresh刷新页面批量导入数据的方法• PHP针对JSON操作实例分析,phpjson实例分析• 给ECShop添加最新评论,ECShop添加最新评论• php将csv文件导入到mysql数据库的方法,
    1/1

    PHP中文网