[ic] Watermarking product pictures

Gabriel Millerd gmillerd at gmail.com
Mon Aug 23 20:27:48 EDT 2004


> 
> If it is something you can make with no troubles I for one would be a
> very happy person. I'm sure that this would be a feature that could be
> integrated into some future version of IC. I can imagine that it is
> something that could come in handy for other users as well as many of us
> would like to protect their work in some way. Stories of ripped pictures
> by a competitor are known by all of us I guess.
> Thanks!
>

this is adapted from something i use for dynamic sizing and
compression ... email me a gmillerd at qualhost.com if you want me to do
something further. I didnt have time at work today to write this into
a mod_perl module :)

#!/usr/bin/perl

use strict;
use CGI;
use Digest::MD5;
use Image::Magick;

my $clearPath = '../clear'; # keep this out of public reach
my $cachePath = './cache';  # keep this in public reach
my $cacheAddr = '/water/cache'; # this must be the
http://.../$cachePath equivlent
my $cgiParam  = 'image'; # i dont like this either
my $markImage = '/tmp/mark.gif'; # full path (should be transparent
and all that

my %markData  = (gravity=>'SouthEast',  # lots of options possible
here
                 compose=>'Atop',
                 opacity=>'80');

my $imageClear = CGI::param($cgiParam) || die ("no image given");
my $imageDigest = Digest::MD5::md5_hex($imageClear) . '.png';

my $tsClear  = (stat("$clearPath/$imageClear"))[9];
my $tsMark   = (stat($markImage))[9];
my $tsDigest = (stat("$cachePath/$imageDigest"))[9];

die ("no real image") unless ($tsClear && $tsMark);

unless ($tsClear < $tsDigest && $tsMark < $tsDigest)
{
    my $bg = new Image::Magick();
    $bg->Read("$clearPath/$imageClear");
    my $wm = Image::Magick->new();
    $wm->Read($markImage);
    $wm->Set(background=>'none');
    $bg->Composite(image=>$wm,                                        
                                                             
%markData);
    $bg->Write("$cachePath/$imageDigest");
}

print CGI::redirect("$cacheAddr/$imageDigest");


More information about the interchange-users mailing list