Apache-UpnpImgBrowser
view release on metacpan or search on metacpan
UpnpImgBrowser.pm view on Meta::CPAN
output(qq| <td width=100> </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> </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 )