/[flash]/openlayers/pdf2tiles.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /openlayers/pdf2tiles.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 20 by dpavlin, Sun Feb 24 21:24:39 2008 UTC revision 21 by dpavlin, Sun Feb 24 23:53:26 2008 UTC
# Line 22  foreach my $path ( $tiles_path, 'ppm' ) Line 22  foreach my $path ( $tiles_path, 'ppm' )
22          mkpath $path || die "can't create $path: $!";          mkpath $path || die "can't create $path: $!";
23  }  }
24    
25  foreach my $zoom ( 1 .. 12 ) {  print "redering test 100dpi page to get pixel size\n";
26    system("pdftoppm -f 1 -l 1 -r 100 $pdf ppm/test") == 0 or die "can't render test: $?";
27    my $test = 'ppm/test-000001.ppm';
28    open(my $fh, '<', $test) || die "can't open $test: $!";
29    my $res = <$fh>;
30    $res = <$fh>;
31    my ( $x_res, $y_res ) = split(/\s+/,$res);
32    print "## 100 dpi resolution = $x_res*$y_res\n";
33    close($fh);
34    
35    $x_res *= ( $to_page - $from_page + 1 );
36    
37          my $dpi = $zoom * 15;  print "## total size = $x_res*$y_res\n";
38    
39    # initial width = 2 tiles
40    my $start_dpi = int( 100 / ( $x_res / 512 ) );
41    
42    foreach my $zoom ( 1 .. 10 ) {
43    
44            my $dpi = $start_dpi * $zoom;
45    
46          my $ppm = sprintf("ppm/%03d", $dpi);          my $ppm = sprintf("ppm/%03d", $dpi);
47    
# Line 43  foreach my $zoom ( 1 .. 12 ) { Line 60  foreach my $zoom ( 1 .. 12 ) {
60                  my $tmp = sprintf("ppm/%03d-%06d.ppm", $dpi, $page);                  my $tmp = sprintf("ppm/%03d-%06d.ppm", $dpi, $page);
61                  die "can't find page $tmp" unless -f $tmp;                  die "can't find page $tmp" unless -f $tmp;
62    
63                  my $img = Imager->new;                  my $p_img = Imager->new;
64                  $img->read(file=>$tmp) or die "Can't load $tmp: ", $img->errstr;                  $p_img->read(file=>$tmp) or die "Can't load $tmp: ", $p_img->errstr;
65    
66                  $x_size += $img->getwidth();                  $x_size += $p_img->getwidth();
67                  my $h = $img->getheight();                  my $h = $p_img->getheight();
68                  $y_size = $h if $h > $y_size;                  $y_size = $h if $h > $y_size;
69    
70                  push @page_imgs, $img;                  push @page_imgs, $p_img;
71          }          }
72    
73          print "loaded $from_page-$to_page of $x_size*$y_size pixels\n";          print "loaded $from_page-$to_page of $x_size*$y_size pixels\n";
# Line 89  foreach my $zoom ( 1 .. 12 ) { Line 106  foreach my $zoom ( 1 .. 12 ) {
106                          if ( ( $x == $tiles_x ) || ( $y == $tiles_y ) ) {                          if ( ( $x == $tiles_x ) || ( $y == $tiles_y ) ) {
107                                  warn "## expand tile to full size\n";                                  warn "## expand tile to full size\n";
108                                  my $t2 = Imager->new(xsize => 256, ysize => 256);                                  my $t2 = Imager->new(xsize => 256, ysize => 256);
109                                    $t2->box(filled=>1, color=>$back_color);
110                                  $t2->paste(                                  $t2->paste(
111                                          top => 256 - $size->{height},                                          top => 256 - $size->{height},
112                                          left => 0,                                          left => 0,
# Line 121  foreach my $zoom ( 1 .. 12 ) { Line 139  foreach my $zoom ( 1 .. 12 ) {
139    
140                  }                  }
141          }          }
142    
143            # break if zoom level over 300dpi
144            last if $dpi > 300;
145  }  }
146                    
147    

Legend:
Removed from v.20  
changed lines
  Added in v.21

  ViewVC Help
Powered by ViewVC 1.1.26