Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl -w
- #
- # Nom : upload_galerie_multi.plx
- # But : Galerie(s) photo(s) programme pour uploader
- # Ecrit par : Marc GREEN
- # Date création : 20/02/2007 Version : 0.1
- # Génération de la page (élémmentaire) par CGI
- # Version/revision :
- #
- # use Carp;
- use CGI qw/:standard/;
- #
- # The purpose of the pragma is to prohibit unsafe use of variables, symbolic
- # references and barewords
- # Before using a variable you'll need to declare it using "my" keyword
- use strict;
- #
- # Pour utilisation de imagemagick
- #
- use Image::Magick;
- # use Image::Info qw(image_info);
- my $image_tmp;
- my $status;
- my $width;
- my $height;
- my $size;
- my $format;
- my $x_scale;
- my $x_size;
- my $y_scale;
- my $y_size;
- my $scale;
- my $new_x;
- my $new_y;
- my @filters;
- my $filter;
- my $blur;
- $x_size = 100;
- $y_size = 150;
- my $image;
- my $entry;
- my @photos_disponibles;
- # my %galeries_disponibles;
- my $photo_a_reduire;
- my $photo_in;
- my $photo_out;
- my $geometry; # Pour redimensionnement des images
- $image_tmp = Image::Magick->new();
- @photos_disponibles = qx{ls *.jpg};
- chomp @photos_disponibles;
- @filters = qw{Point Box Hermite Hanning Hamming Blackman Gaussian Triangle Quadratic Cubic Catrom Mitchell Lanczos Bessel Sinc};
- foreach ( @photos_disponibles ) {
- # For every picture in the list apply all possible filters
- foreach $filter (@filters){
- print "Traitement de $_\n";
- $image_tmp = Image::Magick->new();
- $status = $image_tmp->Read($_);
- if ( $status ) {
- print "Erreur de lecture : $status \n";
- }
- ($width, $height, $size, $format) =
- $image_tmp->Ping("$_");
- $x_scale = $x_size / $width;
- $y_scale = $y_size / $height;
- $scale = $x_scale;
- if ( $y_scale < $scale ) {
- $scale = $y_scale;
- }
- $new_x = int( $width * $scale + 0.5 );
- $new_y = int( $height * $scale + 0.5 );
- # Here I make a thumbnail image (and it is sharp after writing to file)
- $status = $image_tmp->Scale( width=>$new_x, height=>$new_y);
- if ( $status ) {
- print "Apres_reduction : $status <br>\n";
- };
- print "\tEcriture de mini_$_\n";
- $status = $image_tmp->Write("mini_$_");
- if ( $status ) {
- print "Apres_enregistrement : $status <br>\n";
- }
- # Getting the image information change the size depending if the image is horizontal or vertical
- if ( $width > $height ) {
- $geometry="640x480";
- }
- else {
- $geometry="480x640";
- }
- # For every image with every filter try different "blur" values
- for ($blur = 0.125; $blur <=4; $blur *= 2 ){
- $status = $image_tmp->Resize(geometry=>$geometry,filter=>$filter,blur=>$blur);
- if ( $status ) {
- print "Apres_reduction : $status <br>\n";
- };
- print "\tEcriture de mid_".$filter."_".$blur."_$_\n";
- $status = $image_tmp->Write("mid_".$filter."_".$blur."_$_");
- if ( $status ) {
- print "Apres_enregistrement : $status <br>\n";
- }
- # Here none of the resize images are sharp ==> unusable.
- }
- }
- ($photo_a_reduire = $_ ) =~ s/ /\ /g;
- print "Redution de $photo_a_reduire\n";
- `convert $photo_a_reduire -resize 640x480 converted_$photo_a_reduire`;
- # This one gives a great quality image.
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement