CGI-Portable

 view release on metacpan or  search on metacpan

demos/image/DemoDrawImage.pm  view on Meta::CPAN

package DemoDrawImage;
use strict;
use warnings;
use CGI::Portable;

my $PIC_SUBPATH = 'thepic';

sub main {
	my ($class, $globals) = @_;

	if( $globals->current_user_path_element() eq $PIC_SUBPATH ) {
		require GD;

		# create a new image
		my $im = new GD::Image(100,100);

		# allocate some colors
		my $white = $im->colorAllocate(255,255,255);
		my $black = $im->colorAllocate(0,0,0);   
		my $red = $im->colorAllocate(255,0,0);  
		my $blue = $im->colorAllocate(0,0,255);

		# make the background transparent and interlaced
		$im->transparent($white);
		$im->interlaced('true');

		# Put a black frame around the picture
		$im->rectangle(0,0,99,99,$black);

		# Draw a blue oval
		$im->arc(50,50,95,75,0,360,$blue);

		# And fill it with red
		$im->fill(50,50,$red);

		# make sure we are writing to a binary stream
		$globals->http_body_is_binary( 1 );

		# Convert the image to PNG and print it on standard output
		$globals->http_content_type( 'image/png' );
		$globals->http_body( $im->png() );

	} else {
		my $pic_url = $globals->url_as_string( $PIC_SUBPATH );
	
		$globals->page_title( "The GD Synopsis PNG" );
	
		$globals->set_page_body( <<__endquote );
<H1>The GD Synopsis PNG</H1>

<P>Here is the sample image from the Synopsis of GD.pm.  You need to have the 
GD module installed to see it propertly, or you'll get a broken image link.  
The image is in PNG format.</P>

<IMG SRC="$pic_url" ALT="The PNG I Made">

<P>Click <A HREF="$pic_url">here</A> to see the image by itself (not in an HTML 
page) or to read any error page that may have been made.</P>
__endquote
	}
}

1;



( run in 1.687 second using v1.01-cache-2.11-cpan-39bf76dae61 )