在将水印代码弄完之后,顺便制作了一个水印插件。功能很简单,没有任何功能选项,简单的将上传的图片进行二次处理,和遗憾的是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;
}
}
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;
}
}
路过,看看。。。
欢迎