WordPress添加水印插件Watermark Reloaded改进

WordPress插件Watermark Reloaded可以为上传的图片添加文字水印,但不支持中文,对于只需要在图片上添加网址水印的简单需求来说非常适合。

Watermark Reloaded插件支持针对不同裁剪版本的图片添加水印,例如可以限制只为large版本的图片添加水印。可以设置水印的坐标,也可以设置文字颜色。

在图片比较小的情况下,或许我们并不希望再添加水印遮挡图片内容,因此我简单修改了一下Watermark Reloaded插件,实现设置图片尺寸功能,只有在宽和高都大于设置参数的情况下,才为该图片添加水印。

修改watermark-reloaded.php文件中以下代码:

$_options属性变更如下:

protected $_options = array(
	'watermark_installed'  => 0,
	'watermark_donated' => 0,
	'watermark_hide_nag'  => 0,
	'watermark_hide_pro_nag' => 0,
	'watermark_on' => array(),
	'watermark_position' => 'bottom_right',
	'watermark_offset' => array(
		'x' => 5,
		'y' => 5
	),
	'watermark_size' => array(
		'w' => 200,
		'h' => 100
	),
	'watermark_text' => array(
		'value' => null,
		'font' => 'Arial.ttf',
		'size' => 20,
		'color' => '000000'
	)
);

doWatermark方法变更如下:

public function doWatermark($filepath) {
	// get image mime type
	$mime_type = wp_check_filetype($filepath);
	$mime_type = $mime_type['type'];
	// get watermark settings
	$options = $this->get_options();
	// get image resource
	$image = $this->getImageResource($filepath, $mime_type);	
	// add text watermark to image
	$size = $this->getImageSize($image);
	if($size['x'] > $options['watermark_size']['w'] && $size['y'] > $options['watermark_size']['h']) {
		$this->imageAddText($image, $options);
		// save watermarked image
		return $this->saveImageFile($image, $mime_type, $filepath);
	}
}

在插件设置表单Watermark offset这个表格行的后面添加:

<tr valign="top">
	<th scope="row">图片尺寸</th>
	<td>
		<fieldset>
		<legend class="screen-reader-text"><span>Watermark size</span></legend>
			<?php $watermark_size = $this->get_option('watermark_size'); ?>
			<?php foreach(array('w', 'h') as $size) : ?>
			<?php echo $size; ?>: <input class="wr_right" name="watermark_size[<?php echo $size; ?>]" type="text" value="<?php echo $watermark_size[$size]; ?>" size="5" />px<br />
			<?php endforeach; ?>		
			<span class="description">大于该尺寸的图片才添加水印.</span>
		</fieldset>
	</td>
</tr>
阿里云