#!/usr/bin/perl -Tw use strict; $|++; $ENV{PATH} = "/usr/local/bin:/bin:/usr/bin"; ## config my $WIDTH = 75; my $IMAGE = "/path/to/some_random_pic.jpg"; @ARGV = (grep -r, map "$_/chat2.pl", @INC)[0]; ## end config use CGI qw(:all); use CGI::Carp qw(fatalsToBrowser); use Image::Magick; my $im = Image::Magick->new or die "Cannot create im: $!"; $_ and die "cannot read: $_" for $im->Read($IMAGE); $_ and die "cannot set magick: $_" for $im->Set(magick => 'rgb'); $_ and die "cannot scale: $_" for $im->Scale(geometry => "${WIDTH}x1000"); my $width = $im->Get('width'); my $height = $im->Get('height'); my @image = unpack "C*", $im->ImageToBlob; # rgb triples seek DATA, 0, 0; @ARGV = "<&DATA" unless @ARGV; my $string = join "", ; $string =~ tr/!-\x7e//cd; my @string = map { /[<>&\"]/ ? sprintf "&#%d;", ord $_ : $_; } split //, $string; @string = "_" unless @string; my $which = -1; print header, start_html( -title => "Test", -text => '#88ff88', ); print table({ Cellspacing => 0, Cellpadding => 0, Border => 0, }, join "\n", map { Tr(join "", map { my ($r,$g,$b) = splice @image, 0, 3; $which = 0 if ++$which >= @string; td({ Bgcolor => sprintf("#%02x%02x%02x", $r, $g, $b), }, $string[$which] ); } 1..$width) } 1..$height); print end_html; # for DATA above __END__