zoukankan      html  css  js  c++  java
  • 百度编辑器ueditor给上传的图片加入水印

    百度编辑器本身是没有为上传图片加入水印的功能,想要在上传的时候加入图片水印,也非常easy。以 ueditor 1.2.6 为例。打开php文件夹以下的imageUp.php文件,查找“$info = $up->getFileInfo();”,在这句代码的以下加入以下代码:


    /* 加入水印 start */

    $water_img = "watermark.png"; //水印文件(替这里换成你要的水印)

    $img_min_w = 350; //加入水印须要图片最小达到的宽度(px),小于这个宽度时则不加入水印

    $img_min_h = 60; //加入水印须要图片最小达到的高度(px)

    $new_img = $ori_img = $info["url"];


    $original = getimagesize($ori_img); //得到图片的信息。能够print_r($original)发现它就是一个数组

    if($original[0]>$img_min_w&&$original[1]>$img_min_h){ //当图片宽度大于300px才加入水印

    $watermark = getimagesize($water_img);

    $s_original = imgCreateFrom($ori_img, $original[2]); //$original[2]是图片类型,当中1表示gif、2表示jpg、3表示png

    $s_watermark = imgCreateFrom($water_img, $watermark[2]);

    $posX = $original[0] - $watermark[0]-6; //X坐标(右下角)

    $poxY = $original[1] - $watermark[1]-3; //Y坐标(右下角)


    //打水印

    imagecopy($s_original, $s_watermark, $posX, $poxY, 0, 0, $watermark[0], $watermark[1]);

    imagejpeg($s_original, $new_img); //生成新的图片

    }


    //依据文件类型 创建一个新图象

    function imgCreateFrom($img_src, $val){

    switch($val){

    case 1 : $img = imagecreatefromgif($img_src);

    break;

    case 2 : $img = imagecreatefromjpeg($img_src);

    break;

    case 3 : $img = imagecreatefrompng($img_src);

    break;

    }

    return $img;

    }

    /* 加入水印 end */


    然后保存,就能够了。只是要注意的是:$water_img = "watermark.png";//水印文件(替这里换成你要的水印)。


    也能够加文字水印

    $text1 = '中文11';
    //echo $text1;
    //$text1 = iconv("GB2312","UTF-8//IGNORE",$text1); //防止中文乱码
    //echo 'after'.$text1;
    $size = 20; //文字大小
    $font = $_SERVER['DOCUMENT_ROOT']."/themes/Static/images/simfang.ttf"; //字体
    $angle = 0; //旋转角度,逆时针
    $wmtext->GetWpText($text1);
    $wmtext->GetFtSize($size);
    $wmtext->GetFtType($font);
    $wmtext->GetTtAngle($angle);
    $wmtext->AddWpText($info["url"]);// 给图片加入文字水印*/


    class WaterMark
    {
    //类開始
        public $text, $color, $size, $font, $angle, $px, $py, $im;
    //要加入的文字 
    public function GetWpText($text)
        {
       $this->text = $text;
        }
    //加入文字的颜色
    public function GetFtColor($color)
        {
       $this->color = $color;
        }
    //加入文字的字体
    public function GetFtType($font)
        {
       $this->font = $font;
        }
      
    //加入文字的大小
    public function GetFtSize($size)
        {
       $this->size = $size;
        }
    //文字旋转的角度
    public function GetTtAngle($angle)
        {
       $this->angle = $angle;
        }
    //加入文字的位置
    public function GetTtPosit()
        {
    //echo 'here'.strlen($this->text);
       $this->px = imagesx($this->im) - strlen($this->text)*10;
       $this->py = imagesy($this->im) - 20;
        }    
    static function getImageInfo($img) {
            $imageInfo = getimagesize($img);
            if ($imageInfo !== false) {
                $imageType = strtolower(substr(image_type_to_extension($imageInfo[2]), 1));
                $imageSize = filesize($img);
                $info = array(
                    "width" => $imageInfo[0],
                    "height" => $imageInfo[1],
                    "type" => $imageType,
                    "size" => $imageSize,
                    "mime" => $imageInfo['mime']
                );
                return $info;
            } else {
                return false;
            }
        }
    //加入文字水印 
    public function AddWpText($pict)
        {
       //$ext = exif_imagetype($pict);
       $sInfo = self::getImageInfo($pict);
       switch ($sInfo['type']) {
       case 1:
           $picext = "gif";
        $this->im = imagecreatefromgif($pict);
        break;
       case "jpeg":
           $picext = "jpeg";
        $this->im = imagecreatefromjpeg($pict);
        break;
       case 3:
           $picext = "png";
        $this->im = imagecreatefrompng($pict);
        break;
       default:
           $this->Errmsg("不支持的文件格式。");
        break;
       }
      
       //$this->picext = $picext;
       $this->GetTtPosit();
       $im   = $this->im;
       $size = $this->size;
       $angle= $this->angle;
       $px   = $this->px;
       $py   = $this->py;
       $color= $this->color;
       $font = $this->font;
       $text = $this->text;
       $color= imagecolorallocate($im, 255, 0, 0);
       //echo $picext.$im.'==='.$pict;
       //echo $size.' '.$angle.' '.px.' '.$py.' '.$color.' '.$font.' '.$text.'end';
       imagettftext($im, $size, $angle, $px, $py, $color, $font, $text);
       switch ($picext) {
       case "gif":
           imagegif($im, $pict);
        break;
       case "jpeg":
           imagejpeg($im, $pict, 100);
        break;
       case "png":
          imagealphablending($im, false);
                imagesavealpha($im, true);
           imagepng($im, $pict);
        break;
       }
       imagedestroy($im);
        }
    //错误信息提示 
    public function Errmsg($msg)
        {
            echo "<script language='javascript'>alert('".$msg."');</script>";
        }
    //类结束 
    }

  • 相关阅读:
    VTK 空间几何变换(Transform),平移、旋转和缩放
    VTK 对象绘制 3D坐标轴(vtkCubeAxesActor)
    VTK 颜色映射之颜色插值
    VTK 模型的颜色映射
    VTK 如何不使用qvtkwidget,而直接把vtk出口嵌入qt窗口中
    VTK vtkRenderWindow 与vtkRenderWindowInteractor详解
    Qt 将界面程序封装成动态库DLL
    Qt 界面做成dll以便调用
    Qt 将带界面的程序封装成dll
    Qt 开发的界面程序封装成DLL,在VC中成功调用
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7135964.html
Copyright © 2011-2022 走看看