Apache-UpnpImgBrowser
view release on metacpan or search on metacpan
UpnpImgBrowser.pm view on Meta::CPAN
foreach my $device
(sort {$a->getfriendlyname cmp $b->getfriendlyname} @gDeviceList) {
my $name = $device->getfriendlyname;
my $udn = $device->getudn;
my $selected = ($udn eq $dev) ? "selected" : "";
output(qq| <option value="$udn" $selected>$name\n|);
}
output(
qq| </select>\n|,
qq| </form></td></tr>\n|,
qq|</table>\n|,
qq|</div>\n\n|,
qq|<br clear="all">\n\n|,
qq|<div id="leftcol">\n|,
qq|<table width="170" align="left" border="0">\n|,
qq| <tr><td> </td></tr>|,
qq| <tr><td><a href="./?dev=$dev"><span class="menu">Home</span></a>|,
);
# Back Button
if ($dir == 0) {
output(qq|</td></tr>\n|);
} else {
output(
qq| \| <a href="./?dir=$parentdir&dev=$dev"><span class="menu">Back ($parentname)</span></a></td></tr>\n|,
);
}
# Directory List
if(@dirlist && ! $gOptions{'hide-dirs'}) {
output(
qq| <tr><td> </td></tr>|,
qq| <tr><td><b>Image Directories:</b></td></tr>\n|,
);
foreach my $dir (sort {$a->{title} cmp $b->{title}} @dirlist) {
my($title) = $dir->{'title'};
my($id) = $dir->{'id'};
output(qq| <tr><td> <a href="./?dir=$id&dev=$dev">$title</a><td></tr>\n|);
}
}
output(
qq|</table>\n|,
qq|</div>\n\n|,
qq|<br clear="all"\n\n|,
qq|<table border=0 bgcolor="#CCCCCC">\n|,
qq| <tr><td>\n|,
qq| <table border=0 cellpadding=0 cellspacing=0 width="100%">\n|,
qq| <tr><td align="center" bgcolor="#AAAAAA"><font size="+1"><b>$dirname</font></b></td></tr>\n|,
qq| </table>\n\n|,
);
my($w, $h) = split('x', $gOptions{'thumb-size'});
### Thumbnail image table
output(qq| <table align="center" bgcolor="#CCCCCC" border="1" width="|, ($w + 25 )* $gOptions{'cols'}, qq|">\n|);
# Thumbs List
if(@filelist) {
my($counter) = 0;
my(@sorted) = (sort {$a->{title} cmp $b->{title}} @filelist);
my($startIdx) = ($page - 1) * $perpage;
my($endIdx) = ($page * $perpage < @filelist)?
$page * $perpage: scalar @filelist;
for(my $x = $startIdx; $x < $endIdx; $x++) {
my $thumburl = getThumbImgResource($sorted[$x])->{url};
# my $thumburl = $sorted[$x]->{thumburl};
my $url = getImgResource($sorted[$x])->{url};
# my $url = $sorted[$x]->{url};
my $title = $sorted[$x]->{title};
my $contenttype = $sorted[$x]->{contenttype};
$title = (length $title >= 12)?
substr($title, 0, 12) . "...": $title;
output(" <tr>\n") if( ($counter % $gOptions{'cols'}) == 0 );
output(
" ",
qq| <td align="center">|,
qq|<a href="./?dir=$dir&dev=$dev&page=$page&image=$url">|,
qq|<img src="./?target=$thumburl&dev=$dev" hspace="15" height="$h" width="$w"></A>|,
qq|<br>|,
);
output($title) if($gOptions{'show-names'});
output(
qq|</td>\n|,
);
output(" </tr>\n") if( (($counter + 1) % $gOptions{'cols'}) == 0 );
$counter++;
}
} else {
output( qq|<tr><td align="center"><font size="+2"><b>No Images Available</b></font</td></tr>\n|);
}
output(qq| </table>\n\n|,);
### Navigation bar table
output(
qq| <table bgcolor="#AAAAAA" cellpadding=0 cellspacing=0 border=0 width="100%">\n|,
qq| <tr>\n|
);
# previous page
if($page > 1) {
my $pagenum = $page - 1;
output(qq| <td width=100 align="center"><a href="./?dir=$dir&dev=$dev&page=$pagenum">[previous]</A></td>\n|);
} else {
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");
}
( run in 2.829 seconds using v1.01-cache-2.11-cpan-ceb78f64989 )