With the "_from_file" method, you need to be reading from a disk file.
With the loader method, you can load image data which is in a scalar string, or slurped in from a disk file, often referred to as blobs in ImageMagick terminolgy. ( See Convert Gnome2::Canvas::Pixbuf to Image::Magick Array ). This is often quite handy, like when you pull an image in from the web, and want to display it, without first writing it to a disk file. Like:
my $graph_image = get($http_request_string); $graph_image at this point is a string, with a PNG-looking header. my $loader = Gtk2::Gdk::PixbufLoader->new; $loader->write($png_data); $loader->close; my $pixbuf = $loader->get_pixbuf;
Even though there is Gtk2::Gdk::Pixbuf->new_from_data, it does not automatically handle autodetection of file type as well as the Gtk2::Gdk::PixbufLoader. In other words, the Pixbufloader will autodetect from it's list of recognized types, making it the best method to use if you want an easy load.
Here is a simple way to list the autodetected file types which your Gtk2 build recognizes.
#!/usr/bin/perl use strict; use warnings; use Gtk2; my @formats = Gtk2::Gdk::Pixbuf->get_formats(); my @exts; foreach my $format ( @formats ) { foreach my $key ( keys( %$format ) ) { next unless $key eq 'extensions'; foreach my $elem ( @{ $format->{ $key } } ) { push @exts, $elem; } } } print "@exts\n";
So in summary, if you want to learn one good method for foolproof loading of images, use the pixbufloader construct, it will seldom let you down.And finally, [the original message from [aristotle]: <p><quote aristotle> OT: I like to partition things like into smaller scopes: my $pixbuf = do { my $loader = Gtk2::Gdk::PixbufLoader->new(); $loader->write( $image_data ); $loader->close(); $loader->get_pixbuf(); }; So the next guy who looks at it doesn't have to wonder if $loader is used anywhere later, and can see that the entire point of this mumbo jumbo is to load something into $pixbuf. Regards, #Aristotle </quote aristotle>
In reply to Re^4: Tk-Karoake Player-w-timidity
by zentara
in thread Tk-Karoake Player-w-timidity
by zentara
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |