forked from plainblack/webgui
-
Notifications
You must be signed in to change notification settings - Fork 0
/
thumbnailer.pl
78 lines (68 loc) · 2.42 KB
/
thumbnailer.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#-------------------------------------------------------------------
# WebGUI is Copyright 2001-2006 Plain Black Corporation.
#-------------------------------------------------------------------
# Please read the legal notices (docs/legal.txt) and the license
# (docs/license.txt) that came with this distribution before using
# this software.
#-------------------------------------------------------------------
# http://www.plainblack.com info@plainblack.com
#-------------------------------------------------------------------
#-----------------------------------------
# A little utility to generate WebGUI
# thumbnails.
#-----------------------------------------
use File::stat;
use Image::Magick;
use lib "../lib";
use WebGUI::Utility;
if ($ARGV[0] ne ""){
$results = recurseFileSystem($ARGV[0]);
} else {
print "Usage: perl $0 <uploadsPath> [<thumbnailSize (50)>]\n";
}
#-----------------------------------------
# getType(filename)
#-----------------------------------------
sub getType {
my ($extension);
$extension = $_[0];
$extension =~ s/.*\.(.*?)$/$1/;
return lc($extension);
}
#-----------------------------------------
# createThumbnail(filename,path)
#-----------------------------------------
sub createThumbnail {
my ($image, $x, $y, $r, $n, $type);
$type = getType($_[0]);
if (isIn($type, qw(jpg jpeg gif png tif tiff bmp)) && !($_[0] =~ m/thumb-/)) {
print "Nailing: $_[1]/$_[0]\n";
$image = Image::Magick->new;
$image->Read($_[1].'/'.$_[0]);
($x, $y) = $image->Get('width','height');
$n = $ARGV[1] || 50;
$r = $x>$y ? $x / $n : $y / $n;
$image->Scale(width=>($x/$r),height=>($y/$r)) if ($r > 0);
if (isIn($type, qw(tif tiff bmp))) {
$image->Write($_[1].'/thumb-'.$_[0].'.png');
} else {
$image->Write($_[1].'/thumb-'.$_[0]);
}
}
}
#-----------------------------------------
# recurseFileSystem(path)
#-----------------------------------------
sub recurseFileSystem {
my (@filelist, $file);
if (opendir(DIR,$_[0])) {
@filelist = readdir(DIR);
foreach $file (@filelist) {
unless ($file eq "." || $file eq "..") {
recurseFileSystem($_[0]."/".$file);
createThumbnail($file,$_[0]);
}
}
closedir(DIR);
}
}