IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

[bash] probleme pour un generateur de galerie d'image


Sujet :

Linux

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Points : 6
    Points
    6
    Par défaut [bash] probleme pour un generateur de galerie d'image
    Bonjour,

    J'ai besoin d'aide pour terminé mon script bash, il est quasi finis, il y a juste un bug au début du code et je ne sais pas pourquoi.

    L'idée est de pouvoir entrer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    galerie.sh none none uneTailleEnPixel
    C'est censé paramétrer le nom du fichier de sortis automatiquement en galerie.html, la taille de la hauteur des images à miniaturisé à 200 et la taille de la largeur tel qu'on l'a passé en paramètre, sauf que sa me configure la largeur à 200 aussi.

    Je post le code complet avec des commentaires.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
     
    #!/bin/bash
     
    if [ -z $2 ] && [ -z $3 ]	#Si les paramètres 2 et 3 n'existent pas, on les initialise utomatiquement
    then
    	hauteur=200
    	largeur=200
    fi
     
    if [ -n $2 ]		#Si le paramètre 2 existe
    then
    	if [ "$2" = "none" ]		#Si $2 vaut none
    	then
    		if ! let $3		#Si $3 n'est pas un entier on le signal et on quitte
    		then
    			echo $3 non invalide, $3 doit être un entier. Pour plus d"'"information taper '"'galerie.sh \man'"'
    			exit 1
    		else		#sinon on initialise largeur
    			largeur=$3
    		fi
    		hauteur=200		#hauteur est automatiquement configuré
    	else		
    		if ! let $2		#Sinon si $2 n'est pas un entier on le signal et on quitte
    		then
    			echo $2 nom invalide, $2 doit être un entier. Pour plus d"'"information taper '"'galerie.sh \man'"'
    			exit 2
    		else		#sinon on initialise hauteur
    			hauteur=$2
    		fi
     
    		if [ -z $3 ]		#Si $3 n'existe pas on l'initialise
    		then
    			largeur=200
    		fi
     
    		if ! let $3		#Si $3 n'est pas un entier on le signal et on quitte
    		then
    			echo $3 non invalide, $3 doit être un entier. Pour plus d"'"information taper '"'galerie.sh \man'"'
    			exit 3
    		else		#Sinon on initialise largeur
    			largeur=$3
    		fi
    	fi		
    fi
     
    if [ -z $1 ]	|| [ $1 = "none" ] #si il n'y as pas de paramètre 1 ou que paramètre 1 vaut none
    then
    	nom=galerie.html
    elif [ $1 = "man" ]
    then
    	less manuelGalerie
    	exit 4
    else	
    	nom=$1
    	if [ -e $nom ]	#Si il existe alors on test si le paramètre n'existe pas deja dans le dossier courant
    	then
    		while [ -z $choix ] || [ $choix != 'y' ]		#tant que l'utilisateur n'a pas entrer 'y' on ne sort pas de la boucle
    		do
    			echo Le fichier $nom existe déjà, voulez vous vraiment continuer, si oui le fichier $nom sera ecraser \(y\/n\)
    			read -p '> ' choix
     
    			if [ $choix != "y" ] && [ $choix != "n" ]		#Si l'utilisateur a entré autre chose que 'y' ou 'n'  alors on demande de recommencer sa saisie
    			then
    				echo Veuillez entrer une lettre valide, "'"y"'" pour valider "'"n"'" pour refuser
    			elif [ $choix = "n" ]		#Si l'utilisateur entre 'n' on stop le programme
    			then
    				echo Programme abandonné
    				exit 5
    			fi
    		done
    	fi	
    fi
     
    touch $nom		#On créer le fichier de sortis
     
    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">	
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
       <head>
           <title>Galerie d image</title>
           <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
       </head>
       <body>
    	<p>' > $nom		#On redirige le code minimal html dans le fichier de sortis
     
    while [ -z $chemin ] || [ ! -e $chemin ]		#tant qu'on a rien entré ou tant qu'on as pas entré un chemin valide
    do
    	echo "Veuillez entrer le chemin absolu du dossier contenant les images à réduire"
    	read -p '> ' chemin
     
    	if [ ! -e $chemin ]		#si le chemin est invalide on le signale
    	then
    		echo "Le chemin entrer est invalide: $chemin aucun dossier ou fichier de ce type"
    	fi
    done
     
    if [ -e miniatures ]		#Si le dossier qui va recevoir les imagettes existe alors on le créer	
    then
    	while [ -z $choix2 ] || [ $choix2 != 'y' ]
    	do
    		echo Le dossier miniatures est déjà présents, voulez-vous vraiment continuer, si oui le dossier sera ecrasé \(y\/n\)
    		read -p '> ' choix2
     
    		if [ $choix2 != "y" ] && [ $choix2 != "n" ]
    		then
    			echo Veuillez entrer une lettre valide, "'"y"'" pour valider "'"n"'" pour refuser
    		elif [ $choix2 = "n" ]
    		then
    			echo Programme abandonné
    			exit 5
    		elif [ $choix2 = "y" ]
    		then
    			rm -r miniatures
    			mkdir $chemin/miniatures
    		fi
    	done
    else
    	mkdir $chemin/miniatures
    fi
     
     
    for images in `ls $chemin *.jpg *.png *.gif *.jpeg 2>/dev/null`	#tant qu'on a pas miniaturisé toutes les images dont on gère les extensions, on continue
    do
    	convert $chemin/$images -thumbnail ''$hauteur'x'$largeur'>' $chemin/miniatures/$images		#On miniaturise les images dans le dossier miniatures créer avant
    done
     
    mv $chemin/miniatures ./		#On deplace miniatures dans le dossier d'origine
     
    for images in `ls miniatures *.jpg *.png *.gif *.jpeg 2>/dev/null`		#Tant qu'on a pas redirigé toutes les images vers le dossier de sortis on continue
    do
    	echo '<a href=" '$chemin/$images' "><img src="miniatures/'$images' " alt=" " /></a>' >> $nom
    done
     
    echo '</p>
       </body>
    </html>' >> $nom #On insère la fin du code html
    Merci de votre aide

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 589
    Points : 19 474
    Points
    19 474
    Par défaut
    Tu devrais tester le premier argument avant toute autre chose (parce que s'il n'existe pas, les autres non plus !), voire même tester le nombre d'arguments passés au script.

    Si j'ai bien compris le script accepte un ou (impérativement) trois arguments, c'est ça ?

Discussions similaires

  1. probleme pour inserer valeur sql dans affichage image
    Par 77marins dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 25/07/2011, 17h15
  2. Probleme pour récupérer le handle d'une image dans un subplot
    Par ptit-nico dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 04/07/2008, 12h46
  3. Réponses: 2
    Dernier message: 10/01/2008, 17h44
  4. Réponses: 8
    Dernier message: 12/04/2007, 08h53
  5. Réponses: 2
    Dernier message: 30/05/2002, 08h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo