2006年5月7日 星期日

替 Gallery 加上浮水印的功能

用 Gallery 這個相簿已有一陣子的時間了
一直想要加個 WaterMark 的功能,但一直沒時間
也沒找到適合的 WaterMark hack module。
昨天,又到其官網討論區搜尋,總算皇天不負苦心人
給我找到一個適合用簡單的 hack mod..
這個方法適用於 cpg 1.4.3 並裝有 ImageMagick 套件..
我昇級成 1.4.5 亦可完全適用。步驟很簡單...
1. 在 includes/functions.inc.php 的 1985 行, 找到
[php]$filepathname = $url_prefix[$pic_row['url_prefix']]. path2url($pic_row['filepath']. $pic_prefix[$mode]. $pic_row['filename']);[/php]
用下列取代
[php]if((($mode == "normal") || ($mode == 'fullsize')) && ($CONFIG['thumb_method']=='im')){

// return the url to the wm script
$filepathname = "wm.php?pid=".$pic_row["pid"]."&mode=".$mode;

}else{
// it's a thumb, don't bother wm'ing
$filepathname = $url_prefix[$pic_row['url_prefix']]. path2url($pic_row['filepath']. $pic_prefix[$mode]. $pic_row['filename']);

}[/php]

2. 在 coppermine 的根目錄建一個名為 WM.PHP 的檔案,並把下面的程式碼填入
[php]define('IN_COPPERMINE', true);
require('include/init.inc.php');

header('Content-Type: image/jpeg');
header('Content-Disposition: inline; filename=file.jpg');

$pid = $_REQUEST["pid"];
$mode = $_REQUEST["mode"];

$sql = "SELECT * FROM ".$CONFIG['TABLE_PREFIX']."pictures WHERE pid=$pid";
$db = mysql_connect($CONFIG['dbserver'], $CONFIG['dbuser'], $CONFIG['dbpass']);
mysql_select_db($CONFIG['dbname'], $db);


$result = mysql_query($sql, $db);
$row = mysql_fetch_array($result);

$pic_prefix = array(
'thumb' => $CONFIG['thumb_pfx'],
'normal' => $CONFIG['normal_pfx'],
'fullsize' => ''
);


$cmd = "{$CONFIG['impath']}composite -compose over -gravity SouthEast \"".realpath("./watermark.png")."\" \"".realpath('./'.$CONFIG["fullpath"].$row["filepath"].$pic_prefix[$mode].$row["filename"])."\" jpg:-";

passthru ($cmd, $output);

echo $output;
?>[/php]

3. 取得一份 watermark.png,修改成自己要的圖案再放到相簿的根目錄即可
Watermark.PNG


原始連結