On 03/05/2012 1:54 PM, gary sachs wrote:
I did find the img::window which has pushed me further down the road. But, it 
leads me to some questions about trying to write a PNG or JPEG file of a 
canvas. When I do the writing, it seems that it can take 10 seconds or longer 
to complete and then there is only a partial drawing in the PNG file. So, here 
is the small code fragment I am trying...

my $img = Tkx::image_create_photo(-data =>  $mycanvas, -format =>  'window');
$img =  Tkx::widget->new($img);
$img->write ($filename, -format =>  'JPEG');

... again it works so to speak.

How do I get the entire visble canvas into the PNG? Or for that matter, how 
would I get the entire canvas, visible objects and not visible in the window, 
written to the PNG file? Any way to speed things up? I would like to not have 
to resort to IMAGEMAGICK and GHOSTSCRIPT if possible.

I'm not sure why it would take 10 seconds, though if $mycanvas is really large, it may be passing a lot of data over the Perl<>Tcl bridge. Note that the 'window' format really is about just capturing the visible window. There are numerous tricks and techniques that people have tried to get the whole canvas. They are best shown here:
        http://wiki.tcl.tk/1404

Try the canvas2Photo method shown there. Remember that you can just push this all to Tcl with an eval call rather than try and translate it to Perl.

Jeff

Reply via email to