Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[TOOL] Thumbs Gallery
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools)
View previous topic :: View next topic  
Author Message
Alberto Santini
Tux's lil' helper
Tux's lil' helper


Joined: 03 Jul 2005
Posts: 88
Location: Italy->Sicily->Caltanissetta

PostPosted: Tue Jun 13, 2006 10:17 pm    Post subject: [TOOL] Thumbs Gallery Reply with quote

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>&nbsp;\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
Back to top
View user's profile Send private message
koma
Advocate
Advocate


Joined: 06 Jun 2003
Posts: 2700
Location: Italy

PostPosted: Tue Jun 13, 2006 11:52 pm    Post subject: Reply with quote

che sbatti! Grazie :)
_________________
Remember! Gnu is not Unix!
http://www.youtube.com/watch?v=_yoJI-Tl94g GLORY GLORY HYPNOTOAD
Linux Counter[code:1]
User n° #466586
ID 375005 EkatombeII
ID 375006 Apocalypto
ID 375007 KHP[/code:1]
Back to top
View user's profile Send private message
Alberto Santini
Tux's lil' helper
Tux's lil' helper


Joined: 03 Jul 2005
Posts: 88
Location: Italy->Sicily->Caltanissetta

PostPosted: Wed Jun 14, 2006 11:21 am    Post subject: Reply with quote

Aggiornato!
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum