#!/usr/bin/perl use strict; use warnings; use MIME::Base64; use Imager; use Tk; use Tk::PNG; # load image: my $img = Imager->new(file => 'test.png') or die Imager->errstr; # tk window: my $mw = tkinit(-title => 'Imager & Tk::Photo'); my $img_lab = $mw->Label( -image => my $photo = $mw->Photo, )->pack( -fill => 'both', -expand => 1, ); # react on resize: $img_lab->bind( '' => sub { my $new_img = $img->scale( xpixels => $img_lab->width, ypixels => $img_lab->height, type => 'nonprop', ); $new_img->write( data => \my $data, type => 'png', ) or die $new_img->errstr; $photo->configure(data => encode_base64($data)); }, ); $mw->geometry("=200x200"); MainLoop;