Fake Webcam
My live webcam isn't really live and isn't really a webcam. It's a perl script that I wrote that draws a picture that simulates a live webcam.
The script takes a few images and composites them together:
The script chooses a background based on the time and randomly positions the head on it. The script also displays a message and date/time stamp to give the image more authenticity.
#!/usr/bin/perl -w
#
# fake-webcam.cgi
#
# Author: Steve DeGraeve
# created: Feb 07 2005
# modified: Feb 07 2005
# description:
# This script makes a fake webcam image with an
# up-to-date date time stamp on it.
# Fool your friends. Fun at parties.
#
######################################################################
use Image::Magick;
print "Content-type: image/jpeg\n\n";
my($image, $x, $im);
# what time is it? I don't know. I don't have my watchimal on.
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
# create a new fake webcam image
# get background image and head
$room = Image::Magick->new;
$head = Image::Magick->new;
if ($hour > 18) {
$room->Read('webcamroomday.jpg');
$head->Read('webcamheadday.png');
} else {
$room->Read('webcamroomnight.jpg');
$head->Read('webcamheadnight.png');
}
# copy my head onto background
$randx = rand(110) + 30;
$randy = rand(40) + 30;
$room->Composite(image=>$head,compose=>'Atop', x=>$randx, y=>$randy);
# draw the black box at the bottom of the im for the mesg
$room->Draw(fill=>'black', primitive=>'rectangle', points=>'1,225 320,240 ');
# get a funny mesg to show on the bottom of the fake webcam image
open (FILE, 'webcamtext.txt');
@LINES=<FILE>;
close(FILE);
$SIZE=@LINES;
$yday++;
if ($yday > $SIZE){
$mesg = $LINES[$yday % $SIZE];
} else {
$mesg = $LINES[$yday];
}
chop $mesg;
# write the mesg and date/time to the fake webcam img
if ($min < 10) {$min = "0".$min;};
$mesg .= " :: " . ($mon+1) . "/" . $mday . "/" . ($year+1900) . " @ " . $hour . ":" . $min;
$room->Annotate(font=>'verdana.ttf', pointsize=>9, fill=>'white', text=>$mesg, y=>236, x=>5, antialias=>'false');
# make sure we are writing to a binary stream
binmode STDOUT;
# Convert the image to JPEG and print it on standard output
$room->Write('jpg:-');