#!perl -w
use strict;
use Tk;
use Tk::Photo;
use MIME::Base64;
use Tk::PNG;
use Imager;
my $image = Imager->new(xsize=>100, ysize=>100);
# draw something simple here, you'll probably do something more complex
$image->box(filled=>1, color=>'blue');
$image->box(filled=>1, color=>'red',
xmin=>20, ymin=>20, xmax=>79, ymax=>79);
my $image_data;
$image->write(data =>\$image_data, type=>'png')
or die "Cannot save image: ", $image->errstr;
# supplying binary data didn't work, so we base64 encode it
$image_data = encode_base64($image_data);
my $main = MainWindow->new;
my $tk_image = $main->Photo(-data => $image_data);
$main->Label(-image=>$tk_image)->pack;
MainLoop;
=head1 NAME
=for stopwords tk-photo.pl
tk-photo.pl - display an Imager image under Tk
=head1 SYNOPSIS
$ perl tk-photo.pl
=head1 DESCRIPTION
Simple code to make a Tk::Photo object from an Imager image.
This works by:
=over
=item 1.
write the image data to a scalar in PNG format
=item 2.
Base64 decode the data
=item 3.
read() it into the photo object, supplying the Base64 encoded data to
the C<-data> parameter.
=back
=head1 REVISION
$Revision$
=head1 AUTHOR
Tony Cook <tonyc@cpan.org>
=cut