OK, let me answer my own question so everyone here could benefit from it. This isn't documented in FAQ's or other places (like the POD-documentation of Tk). I found the answer in the Tk mailinglist archives.
For some fileformats (at least for PNG, GIF and JPEG), the data() method returns the data in base64 encoding. Also, the -data option expects the data to be base64 encoded.
To be complete, here's a snippet of code as example:
#!/usr/bin/perl -w
use strict;
use GD;
use Tk;
use Tk::JPEG;
use MIME::Base64;
# Create the main window
my $main = MainWindow->new();
# Open a JPG image in GD
my $im = GD::Image->new('feather.jpg');
# Create an empty image with the desired dimensions
my $resizedim = new GD::Image(120,120);
# Copy everything from $im and resize it into $resizedim
$resizedim->copyResized($im,0,0,0,0,120,120,$im->getBounds());
# encode the jpeg-output of the $resizedim
my $img = encode_base64($resizedim->jpeg());
# create a Photo object with the data and display it within a label
my $image = $main->Photo("button", -data => $img, -format => 'jpeg');
my $label= $main->Label(-image => "button");
$label->grid(-in => $main);
MainLoop;
Jouke Visser, Perl 'Adept'
| [reply] [d/l] |
Jouke,
I tried your code, and it seems to work well except the image (jpg) I use keeps showing up as all black. I used your code verbatim.
Is there something I need to do differently on a Windows system? What OS did you use? Help from anyone?
| [reply] |
I use this piece of code in pVoice (see the code for that) and that works on both Win32 and Un*x platforms. So I think your code or your image may be the problem. Please compare your code to the code of pVoice and see what the problem is.
Jouke Visser, Perl 'Adept'
Using Perl to help the disabled: pVoice and pStory
| [reply] |