#!/usr/bin/perl -wT # filter.cgi use strict; use CGI qw(:standard); use Image::Magick; my %filters = (Charcoal => 'amount', OilPaint => 'radius', Spread => 'amount', Solarize => 'factor', Swirl => 'degrees', Implode => 'factor', Flip => undef, Emboss => undef ); my $filename = "kyla_smile.jpg"; (my $filtered = $filename) =~ s!(\.\w*$)!${filename}_filtered$1!i; if (!param('doit')) { print header, start_html("Filter Image"); print h2(param('error')) if param('error'); print h2("Choose Filter"), start_form(-action=>"filter.cgi"); for (sort keys %filters) { print qq($_ ); defined($filters{$_}) ? print qq($filters{$_}
) : print qq(
); } print submit(-value=>"Alter Image", -name=>"doit"), end_form, end_html; } else { my $filter = param('filter') || error("Please choose a filter"); my $amount = param($filter); my $q = new Image::Magick; error("Couldn't read in image file") if $q->Read($filename); defined($filters{$filter}) ? $q->$filter($filters{$filter} => $amount) : $q->$filter(); $q->Write($filtered); print redirect($filtererd); } sub error { my $error = CGI::escape(@_); print "Location: filter.cgi?error=$error\n\n"; exit; }