WordPress 水印插件

  在将水印代码弄完之后,顺便制作了一个水印插件。功能很简单,没有任何功能选项,简单的将上传的图片进行二次处理,和遗憾的是wordpress没有提供原始上传的图片处理钩子,只能对图片压缩后的几张图片一起来处理,虽然不如原始的来的方便,但是影响还是没有的。多出来的几张缩略图还可以不用处理,比如那些很小的,放张水印上去还显得累赘。因此很优雅的将高度为300一下的图片放弃水印处理。有一个需要注意的就是一定要注意保存透明度,不然有一部分png文件就彻底拜拜了。
  代码这样的,当然这个不含处理图片的,只有逻辑的,不提供插件下载,感觉没必要,这个还是自己制作比较靠谱,不然还不如去用那个现成的,也不错,可以个性化定制水印,而我这个没有,我只是提供一个思路而已。
  首先判断是否为图片上传请求,是的就执行操作,将自己的处理函数勾在wp_generate_attachment_metadata上,这个会传入一个上传的图片详细信息列表,可以自己打印一下就知道是什么内容。

if(!(array_key_exists('post_id', $_REQUEST) && $_REQUEST['post_id'] == -1)) {
    add_filter('wp_generate_attachment_metadata', 'watermark_run_start');
    function watermark_run_start($data){
        if(!empty($data)) {
            $upload_dir   = wp_upload_dir();
            if($data['height'] > 300){
                include(dirname(__FILE__)."/watermark_func.php");
                $water = watermark_get_image_resource(dirname(__FILE__)."/watermark.png");
                imagesavealpha($water,true);
                watermark_run($upload_dir['basedir']."/".$data['file'],$water);
                foreach($data['sizes'] as $v){
                    if($v['height'] > 300){
                        watermark_run($upload_dir['path']."/".$v['file'],$water);
                    }
                }
            }
        }
        return $data;
    }
}

2条评论在“WordPress 水印插件”

写下你最简单的想法