home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / share / doc / libcairo-perl / examples / png-streams.pl < prev    next >
Encoding:
Perl Script  |  2007-03-17  |  745 bĀ   |  43 lines

  1. #!/usr/bin/perl
  2.  
  3. # $Id: png-streams.pl,v 1.2 2007/03/17 16:13:32 tsch Exp $
  4.  
  5. use strict;
  6. use warnings;
  7. use Cairo;
  8.  
  9. my $filename = $ARGV[0];
  10. unless (-e $filename && -f $filename) {
  11.   die "`$filenameĀ„ doesn't seem to be a file";
  12. }
  13.  
  14. open my $rfh, '<', $filename;
  15.  
  16. my $surface = Cairo::ImageSurface->create_from_png_stream (sub {
  17.   my ($closure, $length) = @_;
  18.   my $buffer;
  19.  
  20.   if ($length != sysread ($rfh, $buffer, $length)) {
  21.     die 'read-error';
  22.   }
  23.  
  24.   return $buffer;
  25. });
  26.  
  27. warn "status: " . $surface->status;
  28.  
  29. close $rfh;
  30.  
  31. open my $wfh, '>', $filename . '.bak';
  32.  
  33. $surface->write_to_png_stream (sub {
  34.   my ($closure, $data) = @_;
  35.   if (!syswrite ($wfh, $data)) {
  36.     die 'write-error';
  37.   }
  38. });
  39.  
  40. close $wfh;
  41.  
  42. warn "status: " . $surface->status;
  43.