Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Gtk2-screenshot

by zentara (Archbishop)
on Feb 08, 2006 at 18:54 UTC ( #528898=snippet: print w/replies, xml ) Need Help??
Description: Well here is another little function, that is similar to Tk's WinPhoto. It will take a jpg or png screenshot. It's faster than Tk::WinPhoto too.
#!/usr/bin/perl
use warnings;
use strict;
use Glib qw/TRUE FALSE/;
use Gtk2 '-init';

my $window = Gtk2::Window->new('toplevel');
$window->set_title('Screenshot');
$window ->signal_connect( 'destroy' => \&delete_event );
$window->set_border_width(10);
#->set_size_request(300,200);
$window->set_default_size(300,200);

my $vbox = Gtk2::VBox->new( FALSE, 6 );
$vbox->set_size_request(0,0);

$window->add($vbox);
$vbox->set_border_width(2);

my $hbox= Gtk2::HBox->new( FALSE, 6 );
$vbox->pack_end($hbox,FALSE,FALSE,0);
$hbox->set_border_width(2);

$vbox->pack_end (Gtk2::HSeparator->new, FALSE, FALSE, 0);

my $button = Gtk2::Button->new_from_stock('gtk-quit');
$hbox->pack_end( $button, FALSE, FALSE, 0 );
$button->signal_connect( clicked => \&delete_event );

my $button1 = Gtk2::Button->new_from_stock('Screenshot');
$vbox->pack_start( $button1, FALSE, FALSE, 0 );
$button->signal_connect( clicked => \&screenshot );

$window->show_all();
Gtk2->main;
#####################################
sub delete_event {
Gtk2->main_quit;
return FALSE;
}  
#####################################
sub screenshot{

#we are going to save the entire mainwindow
my ($width, $height) = $window->window->get_size;

# create blank pixbuf to hold the image
my $gdkpixbuf = Gtk2::Gdk::Pixbuf->new ('rgb',
                    0,
                    8,
                    $width,
                    $height);

$gdkpixbuf->get_from_drawable ($window->window, 
             undef, 0, 0, 0, 0, $width, $height);

#only jpeg and png is supported !!!! it's 'jpeg', not 'jpg'
$gdkpixbuf->save ("$0.jpg", 'jpeg', quality => 100);
return FALSE;
}

#  from "perldoc Gtk2::Gdk::Pixbuf"
#  $pixbuf->save ($filename, 'jpeg', quality => '100');
#  Currently only a few parameters exist.  JPEG images can be saved
#  with a "quality" parameter; its value should be in the range
#  [0,100].  Text chunks can be attached to PNG images by specifying
#  parameters of the form "tEXt::key", where key is an ASCII string of
#  length 1-79.  The values are UTF-8 encoded strings.
Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: snippet [id://528898]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (4)
As of 2021-06-16 12:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    What does the "s" stand for in "perls"? (Whence perls)












    Results (74 votes). Check out past polls.

    Notices?