Apache-UpnpImgBrowser

 view release on metacpan or  search on metacpan

UpnpImgBrowser.pm  view on Meta::CPAN

       output(qq|        <td width=100>&nbsp;</td>\n|);
    }



    # page indexes
    if(@filelist) { 
       output(
              qq|        <td align="center" valign="bottom">\n|,
              qq|          <form>\n|,
              qq|          <select onChange="document.location='./?dir=$dir&dev=$dev&page=' + this.options[this.selectedIndex].value">\n|
             );
 
       for(my $y = 0; $y <= int((@filelist - 1)/$perpage); $y++) {
          my $pagenum = $y + 1;

          ($pagenum == $page) ?
              output(qq|              <option value="$pagenum" selected>page $pagenum\n|):
              output(qq|              <option value="$pagenum">page $pagenum\n|);
       }

       output(
              qq|          </select><br>\n|,
              qq|          <font size="-1"><i>Total: </i>|, scalar @filelist, qq| images</font>\n|,
              qq|          </form>\n|,
              qq|        </td>\n|
             );
    }
    
    # next page
    if( $page * $perpage < @filelist) {
       my $pagenum = $page + 1; 
       output(qq|        <td width=100 align="center"><a href="./?dir=$dir&dev=$dev&page=$pagenum">[next]</A></TD>\n|);

    } else {
       output(qq|        <td width=100>&nbsp;</td>\n|);
    }


    output(
           "      </tr>\n",
           "    </table>\n",
           "  </td></tr>\n",
           "</table>\n",
           "</center>\n",
	   "</body>\n",
           "</html>\n"
          );

}



# showThumbFile
#
#
sub showThumbFile {
    my $r = shift || return;

    my %mimeType = 
       (jpg => 'image/jpeg', gif => 'image/gif', png => 'image/png');
    my ($name, $path, $ext) = fileparse($r->filename, qr{\.\w*$});
    my($w, $h) = split('x', $gOptions{'thumb-size'});

    $name =~ s/^\.//g;
    $path =~ s/\/$//g;
    $ext =~ s/^\.//g;
 
    (my $imgName = $name) =~ s/-thumb$//i;
    my($thumbName) = "$name.$ext";
    my($Img) = Image::Magick->new();
    my($tw, $th) = (0, 0);

    if(-f "$path/$thumbName") {
        ($tw, $th) = $Img->Ping("$path/$thumbName");
    }

    # build the thumbnail if it doesn't exist
    if( ($w != $tw && $h != $th) || $gOptions{'force'} ) {
        $Img->Read("$path/../$imgName.$ext");
        $Img->Resize(geometry=>"$gOptions{'thumb-size'}"); 
        $Img->Write("$path/$thumbName");
    }

    my $Fh = FileHandle->new();
    $Fh->open("$path/$thumbName") || die("Can't open image file $path/$thumbName");

    $r->content_type($mimeType{lc $ext});
    output(<$Fh>);

    undef $Img; 
    $Fh->close();
}



# showImgDetail
#
#
#
sub showImgDetail {
    my($r) = shift;

    my(%in) = map { my($key, $val) = split('=', $_); $key => $val } 
                  (split('&', $r->args));

    my $image = $in{image};
    my $page = $in{page} || 1;
    my $dir = $in{dir};
    my $dev = uri_unescape($in{dev}) || $gDeviceList[0]->getudn;
    $dev =~ s/\+/ /g;

 
    # only rotate up to 360 degrees 
    if($in{'rot'} >= 360) { $in{'rot'} -= 360 };

    # only allow scaling to 25% and 200% of image size
    if($in{'scale'} < -75) { $in{'scale'} = -75 };
    if($in{'scale'} > 100) { $in{'scale'} = 100 };

    my $scale = $in{'scale'} + 100;



( run in 0.498 second using v1.01-cache-2.11-cpan-df04353d9ac )