Alberto Santini Tux's lil' helper
Joined: 03 Jul 2005 Posts: 88 Location: Italy->Sicily->Caltanissetta
|
Posted: Tue Jun 13, 2006 10:17 pm Post subject: [TOOL] Thumbs Gallery |
|
|
Descrizione:
Lo script, eseguito dentro la directory con le immagini, crea una pagina web con le thumbnails e i rispettivi link.
Utilizzo
Sommari esempi:
./immagini.pl --tipo=jpg --tipo=png --rapporto=4 --sfondo=FF0000 --testo=0000FF --cornice=00FF00 --dimcornice=4 --align=center --n=6 > index.html
--tipo indica l'estensione, case unsensitive, delle immagini. se ne puo' specificare piu' di una
--rapporto indica il rapporto di rimpicciolimento
--sfondo --testo e --cornice sono i colori HTML dello sfondo, del testo e della cornice
--dimcornice e' la dimensione in pixel della cornice
--align indica l'allineamento delle immagini, puo' essere "left", "center" o "right"
--n indica quante thumbnails per riga devono esserci
./immagini.pl --tipo=jpg --x=100 --y=100 --sfondo=FF0000 --testo=0000FF --n=6 > index.html
In questo caso --x e --y indicano le dimensioni della thumb, che potra' quindi risultare deformata
./immagini.pl --tipo=jpg --x=100 --sfondo=FF0000 --testo=0000FF --n=6 > index.html
./immagini.pl --tipo=jpg --y=100 --sfondo=FF0000 --testo=0000FF --n=6 > index.html
Indicando solo x, o solo y, l'altra dimensione viene calcolata in modo da non deformare l'immagine
Se vengono indicati sia rapporto che x o y, rapporto ha la precedenza. Se non viene specificato qualche parametro, si usano dei valori di default.. vedi "sub main"!
Codice
Code: |
#!/usr/bin/perl -W
use strict;
use Image::Magick;
use File::Basename;
use Getopt::Long;
my $niente;
sub ridim_immagine {
# Primo parametro: path completo dell'immagine
# Secondo parametro: rapporto di rimpicciolimento
# Terzo parametro: x della nuova immagine
# Quarto parametro: y della nuova immagine
(my $percorso, my $rapporto, my $x, my $y) = @_;
my $nuova_x = 0;
my $nuova_y = 0;
# Nel caso i file abbiano piu' di un punto, es: foto.vacanza.jpg
($niente, $niente, my $est) = fileparse($percorso, '\..*');
$est =~ s/.*\.//;
my $nome = substr($percorso, 0, 0 - 1 - length($est));
my $nuovo_nome = $nome . ".thumb." . $est;
# Istanzia il nuovo oggetto
my $immagine = Image::Magick->new;
# Apri l'immagine
$immagine->Read(filename => $percorso);
# Prendi le dimensioni
# Se e' stato specificato il rapporto usa quello
if($rapporto != 0) {
$nuova_x = $immagine->Get('width') / $rapporto;
$nuova_y = $immagine->Get('height') / $rapporto;
} else {
$nuova_x = $x;
$nuova_y = $y;
# Se solo x o solo y sono specificate
if(($nuova_x != 0) and ($nuova_y == 0)) {
$nuova_y = $immagine->Get('height') * $nuova_x / $immagine->Get('width');
} else {
if (($nuova_x == 0) and ($nuova_y != 0)) {
$nuova_x = $immagine->Get('width') * $nuova_y / $immagine->Get('height');
}
}
}
$immagine->Resize(width => $nuova_x, height => $nuova_y);
# Scrivi l'immagine
$immagine->Write(filename => $nuovo_nome);
# Genera il codice HTML
$nome =~ s/.*\///;
$nuovo_nome =~ s/.*\///;
print "<a href=\"", $nome, ".", $est, "\" title=\"Immagine\">\n";
print "\t<img src=\"", $nuovo_nome, "\" alt=\"Thumb\">\n";
print "</a> \n";
}
sub cicla_files {
# Primo parametro: directory da ciclare
# Secondo parametro: estensione dei file da ridimensionare
# Terzo parametro: fattore di riduzione da passare a ridim_immagine
# Quarto parametro: x della nuova immagine
# Quinto parametro: y della nuova immagine
# Sesto parametro: thumb per riga
(my $directory, my @tipo_img, my $rapporto, my $x, my $y, my $n_rig) = @_;
my $pattern;
$pattern = "\.(";
while(@tipo_img) {
$pattern .= ($_ . "|");
}
chop $pattern;
$pattern .= ")\\z";
my $n = 0;
# Apri la directory
opendir(DIR, $directory);
# Leggila
my $file;
while ($file = readdir(DIR)) {
if(($file =~ m/$pattern/i) and not ($file =~ m/thumb/i)) {
# Ridimensiona l'immagine e genera il codice
$n++;
ridim_immagine($directory . "/" . $file, $rapporto, $x, $y);
if(($n % $n_rig) == 0) {
print "<br/><br/>\n";
}
}
}
# Chiudila
closedir(DIR);
}
sub html_head {
# Primo parametro: colore dello sfondo
# Secondo parametro: colore del testo
# Terzo parametro: colore della cornice
# Quarto parametro: dimensione della cornice
# Quinto parametro: allineamento
(my $colore_sfondo, my $colore_testo, my $colore_cornice, my $dim_cornice, my $align) = @_;
print <<EOF;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Galleria immagini</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
font-family: verdana, arial, monospace;
padding: 10px 10px 10px 10px;
EOF
print "\ntext-align: ", $align, ";\n";
print "background-color: #", $colore_sfondo, ";\n";
print "color: #", $colore_testo, ";\n";
print <<EOF;
}
a:link, a:visited, a:hover {
text-decoration: none;
EOF
print "\ncolor: #", $colore_testo, ";\n";
print <<EOF;
}
h1 {
text-align: center;
}
EOF
if($colore_cornice ne '') {
print "img {\n";
print "\tborder-style: solid;\n";
print "\tborder-width: ", $dim_cornice, "px;\n";
print "\tborder-color: #", $colore_cornice, ";\n";
print "}\n";
}
print <<EOF;
</style>
</head>
<body>
<h1>Galleria immagini</h1>
EOF
}
sub html_foot {
print <<EOF;
</body>
</html>
EOF
}
sub main {
my $cwd = `pwd`; chop $cwd;
my @tipo_img = '';
my $rapporto = 0;
my $x = 0;
my $y = 0;
my $colore_sfondo = '';
my $colore_testo = '';
my $colore_cornice = '';
my $dim_cornice = 0;
my $align;
my $n_rig = 0;
GetOptions("tipo:s" => \@tipo_img,
"rapporto:f" => \$rapporto,
"x:i" => \$x,
"y:i" => \$y,
"sfondo:s" => \$colore_sfondo,
"testo:s" => \$colore_testo,
"cornice:s" => \$colore_cornice,
"dimcornice:i" => \$dim_cornice,
"align:s" => \$align;
"n:i" => \$n_rig);
if(@tipo_img[0] eq '') {
@tipo_img[0] = "jpg";
}
if($rapporto == 0 and $x == 0 and $y == 0) {
$y = 100;
}
if($colore_sfondo eq '') {
$colore_sfondo = "000000";
}
if($colore_testo eq '') {
$colore_testo = "FFFFFF";
}
if($dim_cornice == 0) {
$dim_cornice = 1;
}
if($align eq '' or ($align not eq 'center' and $align not eq 'left' and $align not eq 'right')) {
$align = "center";
}
if($n_rig == 0) {
$n_rig = 4;
}
html_head($colore_sfondo, $colore_testo, $colore_cornice, $dim_cornice, $align);
cicla_files($cwd, @tipo_img, $rapporto, $x, $y, $n_rig);
html_foot;
}
main;
|
Last edited by Alberto Santini on Wed Jun 14, 2006 11:05 pm; edited 4 times in total |
|