Blogger Information
Blog 81
fans 1
comment 0
visits 124575
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
在富文本中给图片添加水印
有什么是忘不了的的博客
Original
1202 people have browsed it

百度富文本:

    我们可以去官网下载,引入两个js文件,jq也需要引入。

需要使用的页面中添加:

<script src="/static/ueditor/ueditor.config.js"></script>
<script src="/static/ueditor/ueditor.all.js"></script>

<div type="text" name="content" id="EditorId" placeholder="请输入内容"></div>

<script type="text/javascript" charset="utf-8">//初始化编辑器
window.UEDITOR_HOME_URL = "/static/ueditor/";//配置路径设定为UEditor所放的位置      
window.onload=function(){
    window.UEDITOR_CONFIG.initialFrameHeight=600;//编辑器的高度
    window.UEDITOR_CONFIG.initialFrameWidth=1200;//编辑器的宽度
    var editor = new UE.ui.Editor({
        imageUrl : '',
        fileUrl : '',
        imagePath : '',
        filePath : '',
        imageManagerUrl:'', //图片在线管理的处理地址
        imageManagerPath:'__ROOT__/'
    });
    editor.render("EditorId");//此处的EditorId与<textarea name="content" id="EditorId">的id值对应 </textarea>
}
</script>

如何添加水印,我从百度转了转,发现都是一样的。。。。

在这里粘一个比较全的。但是水印的位置,需要自己调试,(手动改源码)

打开ueditor目录下的php目录下的config.json 文件在上传配置项添加下面代码:     "iswatermark": "true",  

打开ueditor目录下的php目录下的action_upload.php文件,搜索代码:

case 'uploadimage': 
$config = array( 
"pathFormat" => $CONFIG['imagePathFormat'],
 "maxSize" => $CONFIG['imageMaxSize'], 
 "allowFiles" => $CONFIG['imageAllowFiles'] 
 ); 
 $fieldName = $CONFIG['imageFieldName'];
  break;

在“break;”前添加:

$watermark = $CONFIG['iswatermark'];

这句话就可以读取配置文件的"iswatermark"值了。继续在这个文件搜索代码

$up = new Uploader($fieldName, $config, $base64);

把它改成:

$up = new Uploader($fieldName, $config, $base64, $watermark);

这样就可以实例化Uploader类时带上$watermark变量。

3.这是最后一步,也是最重要的一步。打开ueditor目录下的php目录下的Uploader.class.php文件。在这个类里面添加

private $water; //是否添加水印(属性)

这句话。

把构造方法改成

public function __construct($fileField, $config, $type = "upload", $watermark = false)

在构造方法里面写上  ($this->water = $watermark; )这句话。

在upFile 方法内部后面添加以下代码:

if( $this->water ){             
$this->watermark($this->filePath,$this->filePath);        
}

在这个类文件里添加以下方法,实现图片添加水印就靠它了。

/**
* 图片加水印
* $source  string  图片资源
* $target  string  添加水印后的名字
* $w_pos   int     水印位置安排(1-10)【1:左头顶;2:中间头顶;3:右头顶...值空:随机位置】
* $w_img   string  水印图片路径
* $w_text  string  显示的文字
* $w_font  int     字体大小
* $w_color string  字体颜色
*/
    public function watermark($source, $target = '', $w_pos = '', $w_img = '', $w_text = '水印文字',$w_font = 10, $w_color = '#CC0000') {
        $this->w_img = '../watermark.png';//水印图片
        $this->w_pos = 9;
        $this->w_minwidth = 400;//最少宽度
        $this->w_minheight = 200;//最少高度
        $this->w_quality = 80;//图像质量
        $this->w_pct = 60;//透明度

        $w_pos = $w_pos ? $w_pos : $this->w_pos;
        $w_img = $w_img ? $w_img : $this->w_img;
        if(!$this->check($source)) return false;
        if(!$target) $target = $source;
        $source_info = getimagesize($source);//图片信息
        $source_w  = $source_info[0];//图片宽度
        $source_h  = $source_info[1];//图片高度
        if($source_w < $this->w_minwidth || $source_h < $this->w_minheight) return false;
        switch($source_info[2]) { //图片类型
            case 1 : //GIF格式
                $source_img = imagecreatefromgif($source);
                break;
            case 2 : //JPG格式
                $source_img = imagecreatefromjpeg($source);
                break;
            case 3 : //PNG格式
                $source_img = imagecreatefrompng($source);
//imagealphablending($source_img,false); //关闭混色模式
                imagesavealpha($source_img,true); //设置标记以在保存 PNG 图像时保存完整的 alpha 通道信息(与单一透明色相反)
                break;
            default :
                return false;
        }
        if(!empty($w_img) && file_exists($w_img)) { //水印图片有效
            $ifwaterimage = 1; //标记
            $water_info  = getimagesize($w_img);
            $width    = $water_info[0];
            $height    = $water_info[1];
            switch($water_info[2]) {
                case 1 :
                    $water_img = imagecreatefromgif($w_img);
                    break;
                case 2 :
                    $water_img = imagecreatefromjpeg($w_img);
                    break;
                case 3 :
                    $water_img = imagecreatefrompng($w_img);
                    imagealphablending($water_img,false);
                    imagesavealpha($water_img,true);
                    break;
                default :
                    return;
            }
        }else{
            $ifwaterimage = 0;
            $temp = imagettfbbox(ceil($w_font*2.5), 0, '../simsun.ttc', $w_text); //imagettfbbox返回一个含有 8 个单元的数组表示了文本外框的四个角
            $width = $temp[2] - $temp[6];
            $height = $temp[3] - $temp[7];
            //$width 和  $height 为0自己测试的。如果你的文字或图片看不到话,就需要自己手动改一下。
            unset($temp);
        }
        //这里自己加的
        if ($w_pos != 1 && $w_pos != 4 && $w_pos != 7 ){
            if (empty($width)||empty($height)){
                $width = 150;
                $height = 50;
            }
        }
        switch($w_pos) {
            case 1:
                $wx = 5;
                $wy = 5;
                break;
            case 2:
                $wx = ($source_w - $width) / 2;
                $wy = 0;
                break;
            case 3:
                $wx = $source_w - $width;
                $wy = 0;
                break;
            case 4:
                $wx = 0;
                $wy = ($source_h - $height) / 2;
                break;
            case 5:
                $wx = ($source_w - $width) / 2;
                $wy = ($source_h - $height) / 2;
                break;
            case 6:
                $wx = $source_w - $width;
                $wy = ($source_h - $height) / 2;
                break;
            case 7:
                $wx = 0;
                $wy = $source_h - $height;
                break;
            case 8:
                $wx = ($source_w - $width) / 2;
                $wy = $source_h - $height;
                break;
            case 9:
                $wx = $source_w - ($width + 5);
                $wy = $source_h - ($height + 5);
//                $wx = $source_w  - 100;
//                $wy = $source_h - 30 ;
                break;
            case 10:
                $wx = rand(0,($source_w - $width));
                $wy = rand(0,($source_h - $height));
                break;
            default:
                $wx = rand(0,($source_w - $width));
                $wy = rand(0,($source_h - $height));
                break;
        }

        if($ifwaterimage) {
            if($water_info[2] == 3) {
                imagecopy($source_img, $water_img, $wx, $wy, 0, 0, $width, $height);
            }else{
                imagecopymerge($source_img, $water_img, $wx, $wy, 0, 0, $width, $height, $this->w_pct);
            }
        }else{
            if(!empty($w_color) && (strlen($w_color)==7)) {
                $r = hexdec(substr($w_color,1,2));
                $g = hexdec(substr($w_color,3,2));
                $b = hexdec(substr($w_color,5));
            }else{
                return;
            }
            imagestring($source_img,$w_font,$wx,$wy,$w_text,imagecolorallocate($source_img,$r,$g,$b));
        }

        switch($source_info[2]) {
            case 1 :
                imagegif($source_img, $target);
//GIF 格式将图像输出到浏览器或文件(欲输出的图像资源, 指定输出图像的文件名)
                break;
            case 2 :
                imagejpeg($source_img, $target, $this->w_quality);
                break;
            case 3 :
                imagepng($source_img, $target);
                break;
            default :
                return;
        }

        if(isset($water_info)){
            unset($water_info);
        }
        if(isset($water_img)) {
            imagedestroy($water_img);
        }
        unset($source_info);
        imagedestroy($source_img);
        return true;
    }
    public function check($image){
        return extension_loaded('gd') && preg_match("/\.(jpg|jpeg|gif|png)/i", $image, $m) && file_exists($image) && function_exists('imagecreatefrom'.($m[1] == 'jpg' ? 'jpeg' : $m[1]));
    }

这段代码多多少少感觉有点小问题。

反正凑活能用。一些地方就自己手动改一下就好

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post