Possible Bulk Watermaking Idea

NBrady

Joined: 2005-10-07
Posts: 77
Posted: Sat, 2005-11-05 00:57

I got this from a board of another gallery script, I really don't know much about PHP but maybe it can help someone who does :

Quote:
1) save this code as showimage.php and upload to gallery root

Code:
<?php
// This script will show image with logo on it
// Supported are PNGs,GIFs,JPEGs
// ------------------------------------------------------
// call it: http://www.domain.com/showimage.php?img=<name>
// where <name> is name of image...
// example:
// http://www.domain.com/showimage.php?img=001.jpg
// ------------------------------------------------------
// You have to set parameters here:
// ------------------------------------------------------
$image_quality="100";
// quality of JPEG conpression [0-100]
// ------------------------------------------------------
$image_path="./";
// path to images
// examples:
// $image_path="./images/";
// $image_path="../../images/";
// ------------------------------------------------------
$logo_path="logo/logo.png";
// path and name of the LOGO image (PNG,GIF,JPEG)
// examples:
// $logo_path="./logos/img_logo.png";
// $logo_path="../../logos/img_logo.png"
// ------------------------------------------------------
$logo_pos_x="right";
// left, right, center
$logo_pos_y="bottom";
// top, middle, bottom
// ------------------------------------------------------
$error_not_found="File doesn't exists";
// where image is not found, show this error text
$error_not_supported="This image type isn't supported";
// where image is not supported, show this error text
$error_bg_color=array(255,255,255);
// image background color in RGB - (RED,GREEN,BLUE)
$error_text_color=array(255,0,0);
// text color in RGB - (RED,GREEN,BLUE)
// ------------------------------------------------------
// YOU DON'T HAVE TO EDIT CODE BELOW THIS LINE
// ------------------------------------------------------
// SCRIPT written by Ladislav Soukup, [root@soundboss.cz]
// ------------------------------------------------------
function NewImage($width,$height,$text=""){
global $error_bg_color,$error_text_color;
if (function_exists("imagecreatetruecolor")){
if (!@$img=imagecreatetruecolor($width,$height)){
$img=imagecreate($width,$height);
}
} else {
$img=imagecreate($width,$height);
}
$imgbgcolor=ImageColorAllocate($img,$error_bg_color[0],$error_bg_color[1],$error_bg_color[2]);
$imgtextcolor=ImageColorAllocate($img,$error_text_color[0],$error_text_color[1],$error_text_color[2]);
imagefilledrectangle($img,0,0,$width,$height,$imgbgcolor);
imagestring($img,5,10,10,$text,$imgtextcolor);
return($img);
}
Header("Content-type: image/jpeg");
$exp=GMDate("D, d M Y H:i:s",time()+999);
Header("Expires: $exp GMT");
$rep_from=array("./","../");
$rep_to=array("","",);
$_GET["img"]=str_replace($rep_from,$rep_to,$_GET["img"]);
$file=$image_path . $_GET["img"];
if (file_exists($file)){
$info=getimagesize($file);
$width=$info[0];
$height=$info[1];
if ($info[2]==1){
$img=@imagecreatefromgif($file);
} else if ($info[2]==2){
$img=@imagecreatefromjpeg($file);
} else if ($info[2]==3){
$img=@imagecreatefrompng($file);
} else {
$width=640;
$height=480;
$img=NewImage($width,$height,$error_not_supported);
}
} else {
$width=640;
$height=480;
$img=NewImage($width,$height,$error_not_found);
}
if (file_exists($logo_path)){
$info=getimagesize($logo_path);
$logo_width=$info[0];
$logo_height=$info[1];
if ($info[2]==1){
$img_logo=imagecreatefromgif($logo_path);
} else if ($info[2]==2){
$img_logo=imagecreatefromjpeg($logo_path);
} else if ($info[2]==3){
$img_logo=imagecreatefrompng($logo_path);
} else {
$logo_width=120;
$logo_height=20;
$img=NewImage($logo_width,$logo_height,$error_not_supported);
}
// positioning - X
if ($logo_pos_x=="left"){
$dst_x=10;
} else if ($logo_pos_x=="center"){
$dst_x=round(($width-$logo_width)/2);
} else if ($logo_pos_x=="right"){
$dst_x=$width-10-$logo_width;
} else {
$dst_x=round(($width-$logo_width)/2);
}
// positioning - Y
if ($logo_pos_y=="top"){
$dst_y=5;
} else if ($logo_pos_y=="middle"){
$dst_y=round(($height-($logo_height/2))/2);
} else if ($logo_pos_y=="bottom"){
$dst_y=$height-5-$logo_height;
} else {
$dst_y=round(($height-($logo_height/2))/2);
}
imagecopy($img,$img_logo,$dst_x,$dst_y,0,0,$logo_width,$logo_height);
}
ImageJpeg($img,"",$image_quality);
?>

2) Upload your logo.png in the specified path in the script

3) Change the code in line 37 (viewimage_begin.php) with this:
Code:
<td class="viewimage"><a href="<?php $mg2->output(link) ?>" target="<?php $mg2->output(target) ?>" title="<?php echo $title ?>"><img src="showimage.php?img=<?php $mg2->output(imagefile) ?>" border="0" width="<?php $mg2->output(width) ?>" height="<?php $mg2->output(height) ?>" alt="" title="" /></a></td>

 
valiant

Joined: 2003-01-04
Posts: 32509
Posted: Sat, 2005-11-05 01:23

as you said, it's from another application. it doesn't use any of G2's abstraction, requires GD and it will just watermark every image when you're showing it.
it doesn't know where to get the g2 images from and where to store them.
all in all, it doesn't really help for g2. we have about an idea how we could add the feature, but we're very busy with other issues too.

if anyone wants to add bulk watermarking to g2, please submit a patch. if you have questions about some steps, we'll gladly help you.