Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 30/03/2010, à 13:03

soupaloignon

Script : Un script multi fonction pour travailler sur des images

Bonjour à tous,

J'ai souvent besoin de travailler sur des photos venant d'APN. Jusqu'à présent j'utilisais plusieurs scripts différents, chacun faisant une tâche précise.

Je les ai regroupé en 1 seul script, pour avoir tout ça sous la main et pouvoir faire plusieurs opérations différentes à la suite.

Je le poste ici, si ça peut servir....


Son nom :
MultiScript : Fichiers APN

Nouvelle version : 0.3.5 (3 décembre 2011) : Lien vers le script et des explications détaillées
http://forum.ubuntu-fr.org/viewtopic.ph … 1#p7313571




Un grand merci à tous ceux qui sont intervenus à un moment ou un autre pour des infos sur des parties de ce script smile

Dernière modification par soupaloignon (Le 03/12/2011, à 22:37)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#2 Le 30/03/2010, à 14:25

twocats

Re : Script : Un script multi fonction pour travailler sur des images

Un exemple de modification. Remplace :

if [ ! "$menu" ]; then
     zenity --error --title="Erreur" --text="Choisissez une action"
     fi

par

while [[ ${menu} = [^0-15] ]]
	do
		zenity --error --title="Erreur" --text="Choisissez une action valide"
	done

Dans le premier code, si je rentre 'toto' comme valeur à ${menu} c'est considérer comme valide puisque tu cherche juste à savoir si ${menu} existe.
Dans le second code, toutes valeurs qui n'est pas comprise entre 0 et 15 est considérée comme invalide. C'est beaucoup plus fiable.


La réponse est 42

Hors ligne

#3 Le 31/03/2010, à 23:15

Kanor

Re : Script : Un script multi fonction pour travailler sur des images

Pour le pdf aprés une petit recherche j'ai trouvé ça
http://ubuntuforums.org/showthread.php?t=1379633
donc tu dois modifié la commande comme ça

convert $i -quality 80 -resize 800x600 +compress $NOM

Hors ligne

#4 Le 31/03/2010, à 23:35

Jean-Julien

Re : Script : Un script multi fonction pour travailler sur des images

Si ça peut t'aider, essaies ça. Un petit utilitaire en Python.

Ce script ne répond pas à toute tes attentes, mais il est parfois utile.
Je m'en sers pour renommer mes photos.
Les suffixes seront respectés et le nouveau nom que tu choisiras sera indexé.

Exemple de fichiers à renommer:

aaa.jpg
aaa.xcf
bbb.jpg
ccc.jpg
ddd.jpg
ddd.xcf

Tu choisis un nouveau nom et un indexe de départ;
Exemple: nom = "nouveau" et indexe = 10, ça va donner:

nouveau-10.jpg
nouveau-10.xcf
nouveau-11.jpg
nouveau-12.jpg
nouveau-13.jpg
nouveau-13.xcf

Tu places le script dans le répertoire ou tu dois renommer les fichiers et tu lances le script.
Attention ! Le script doit posséder le nom "rsi.py". Il est alors transparent et n'est pas pris en compte par la procédure de changement de nom. Il ne fonctionne correctement qu'avec des suffixes de 3 caractères (.jpg   .xcf  .png  etc...)
Bien sur le code peut être modifié si les besoins sont différents.

#! /usr/bin/env python
# -*- coding: utf-8 -*-

''' 
. "rsi" signifie: renommage spécial indexé.
. attention, ce script ne fonctionne que pour les noms possédant un suffixe de 3 caractères.
. ex: ".xcf", ".jpg".
. le répertoire ne doit contenir que des noms de ce type ("." + 3 caractères).
. le nom du script _/rsi.py\_ est rendu transparent par le script.
. langage: python 2.6.2.
'''

from os import *
from string import *

# ------------------------------------------------

def djaze(tuple):
    # contrôle, puis renvoie une saisie sécurisée faite au clavier
    found = False                   # . initialisation. la saisie n'est pas validée.
    while found == False:           # . tant que la saisie n'est pas validée.
        order = raw_input()         # . saisie au clavier.
        for element in tuple:       # . pour chaque élément du tuple,
            if element == order:    # comparer l'élément avec la saisie.
                found = True        # . si la saisie est valide, le drapeau _/found\_ passe à _/True\_.
        if found == False:          # . si la saisie est invalide,
            print'??\a',            # il y a demande de réintroduction et émission d'un bip sonore.
    return order                    # . la fonction retourne la valeur quand elle est validée.

''' . cette fonction de saisie sécurisée est conçue pour etre utilisée dans un programme
fonctionnant dans le terminal. elle reçoit comme paramètre un tuple contenant des chaînes.
. elle renvoie la chaîne saisie au clavier par l'utilisteur, uniquement si cette chaîne
est contenue dans le tuple passé en paramètre. '''

# ------------------------------------------------

def etir():
    # renvoie un entier et seulement un entier
    while True:
        try:
            integer_number = int(raw_input())
            break
        except:
            print('??\a'),
    return integer_number

# ------------------------------------------------

def rsi():
    # renommage spécial indexé

    global prefixe_nouveau_nom
    global index

    rep_courant = getcwd()                      # donne le répertoire courant
    contenu = listdir(rep_courant)              # donne le contenu du répertoire courant
    contenu.sort()                              # tri des noms des fichiers

    prefixe_nom_precedent = ''                  # initialisation

# .le premier nom n'ayant pas de nom auquel être comparé, le script considère son préfixe comme
# étant sans équivalent et l'index est d'office augmenté de 1 unité, d'où la décrémentation
# lors de son initialisation.
    index -= 1                                  # initialisation

    for nom_actuel in contenu:

        if (nom_actuel <> 'rsi.py'):            # le fichier _/rsi.py\_ est transparent
            # extraction du préfixe (ne fonctionne que si le suffixe est de 4 caractères)
            prefixe_nom_actuel = ''
            boucle = 0
            while (boucle < (len(nom_actuel) - 4)):
                prefixe_nom_actuel += nom_actuel[boucle]
                boucle += 1

            # extraction du suffixe (ne fonctionne que si le suffixe est de 4 caractères)
            suffixe_nom_actuel = ''
            boucle = len(nom_actuel) - 4
            while (boucle < len(nom_actuel)):
                suffixe_nom_actuel += nom_actuel[boucle]
                boucle += 1

            # s'il existe des noms possédant le même préfixe, l'index ne change pas...
            if (prefixe_nom_actuel == prefixe_nom_precedent):
                nouveau_prefixe = prefixe_nouveau_nom + '-' + str(index)
                nouveau_nom = nouveau_prefixe + suffixe_nom_actuel
            # ...sinon, l'indexe est incrémenté.
            else:
                index += 1
                nouveau_prefixe = prefixe_nouveau_nom + '-' + str(index)
                nouveau_nom = nouveau_prefixe + suffixe_nom_actuel

            prefixe_nom_precedent = prefixe_nom_actuel

            rename(nom_actuel, nouveau_nom)     # changement du nom du fichier

    print 'renommage spécial indexé terminé'

    return 0                                    # fin de fonction

# ------------------------------------------------

# -----------------------------
# ---- programme principal ----

print
print '                                             !!!!!!!!!!!!'
print '  attention, vous allez lancer une opération irréversible dans le répertoire courant'
print '  -------------------------------------------!!!!!!!!!!!! --------------------------'
print
print '  renommage spécial indexé'

while True:
    print '  nouveau nom:    ',
    prefixe_nouveau_nom = raw_input()   # variable globale
    print '  index de départ:',
    index = etir()                      # entrée sécurisée d'un entier, variable globale

    print '  1) renommer'
    print '  8) recommencer'
    print '  9) quitter'

    choix = djaze(('1','8','9'))        # la valeur '8' est neutre et permet de rester dans la boucle

    if choix == '1':
        cff = rsi()                     #  _/cff\_ = code de fin de fonction
        break

    if choix == '9':
        print 'abandon'
        break

print '  fin de script, pressez <enter>',
passive = raw_input()

Hors ligne

#5 Le 01/04/2010, à 18:17

soupaloignon

Re : Script : Un script multi fonction pour travailler sur des images

Merci pour vos réponses,

> twocats
J'arrive pas à placer ton code. Dans cet exemple cela irait où ?

###### Renomme en masse sur X chiffres #############################################
 
# Choix du menu   
if [ "$menu" = 4 ] ; then  

# Choix du nombre de caracteres
nombre=$(zenity --entry --width=500 --height=150 --title="$title : Nombre de chiffres" --entry-text="4" --text="Choisir sur quel nombre de chiffres seront renommés vos fichiers :" )
if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi

# Transforme la casse et ou l'extension en jpg
ls -d *.JPG | sed 's/\(.*\).JPG$/mv "&" "\1.jpg"/' | sh
ls -d *.JEPG  | sed 's/\(.*\).JEPG$/mv "&" "\1.jpg"/' | sh
ls -d *.jepg  | sed 's/\(.*\).jepg$/mv "&" "\1.jpg"/' | sh

# Transforme la casse et ou l'extension en png
ls -d *.PNG | sed 's/\(.*\).PNG$/mv "&" "\1.png"/' | sh

# Boucle
let "indice=1"
for fichier in *.jpg *.png
do
         if [ -f "$fichier" ]; then
            extension=${fichier##*.}
            echo "$fichier" "=>" "$indice.$extension"
            mv "$fichier" `printf "%0"$nombre"d" $indice`".$extension"
            let "indice+=1"
        fi
done

fi
####################################################################################

> Kanor
Merci, ça marche impeccable. Cela figuerera dans la prochaine version du script

> Jean-Julien
Merci pour ton retour. Mais je préfére continuer à faire ça en bash smile


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#6 Le 01/04/2010, à 18:50

Airballman

Re : Script : Un script multi fonction pour travailler sur des images

La vache ca fait du bien smile

Pour une fois que c'en est un qui poste et pas qui demande smile


Tres bon ton srcipt. Je pense que si chacun rajoute les foncitons qu'il a codé lui meme ca peut devenir tres interessant!

Hors ligne

#7 Le 02/04/2010, à 16:09

soupaloignon

Re : Script : Un script multi fonction pour travailler sur des images

Airballman a écrit :

La vache ca fait du bien smile

Pour une fois que c'en est un qui poste et pas qui demande smile

On a tous demandé un jour ou l'autre big_smile. Et pour ma part, je continu wink


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#8 Le 11/04/2010, à 00:15

Lapogne71

Re : Script : Un script multi fonction pour travailler sur des images

Salut , j'ai essayé le script et j'ai quelques remarques :

1) dans tout le script tu fais des "ls -d *.JEPG" et "ls -d *.jepg"
==> je pense qu'il faudrait remplacer JEPG par JPEG

2) le choix 1 propose de renommer les .JPG en .jpg. Mais dans les autres choix, pour chaque opération tu imposes la même conversion, ce que l'utilisateur ne souhaite pas forcément ? Je propose donc de remplacer tous les "for fichier in *.jpg *.png" par "for fichier in *.jpg *.png *.JPG *.PNG"

3) "Renomme en masse sur X chiffres"
==> le nom original est écrasé et remplacé par un nombre... il aurait mieux valu rajouter ce nombre au nom existant, ou au moins garder une partie significative du nom existant.

4) "Renomme dans l'ordre chronologique des photos venant d'APN différents"
==> idem, le nom d'origine est écrasé !

5) "Changer la date : Année et/ou mois et/ou jour (heures/minutes/secondes non changés) (jpg)"
==> ton script n'agit que sur les png ! smile

A part çà c'est une excellente idée d'avoir fait un script interactif, même si chacun à sa façon de "traiter" ses photos. La plupart des gens que je connais ne font rien, il stocke leur photos telles quelles sans renommer ni rien... bonjour les doublons, les conflits de noms et les recherches de photos !

Hors ligne

#9 Le 11/04/2010, à 13:10

soupaloignon

Re : Script : Un script multi fonction pour travailler sur des images

Merci pour tes commentaires constructifs, voici quelques éléments de réponses.

Tout d'abord j'ai fait ce script pour mon usage personnel. Donc certains des choix techniques du script l'ont été par rapport à l'usage que j'en fais.

La casse par exemple : faisant un peu de dev web j'ai pour principe d'avoir systématiquement une casse en minuscule et sans espace pour les noms de fichiers. C'est pour cela que le script travaille de cette manière.




Lapogne71 a écrit :

1) dans tout le script tu fais des "ls -d *.JEPG" et "ls -d *.jepg"
==> je pense qu'il faudrait remplacer JEPG par JPEG

Oups, grosse erreur, bien vu wink

Lapogne71 a écrit :

2) le choix 1 propose de renommer les .JPG en .jpg. Mais dans les autres choix, pour chaque opération tu imposes la même conversion, ce que l'utilisateur ne souhaite pas forcément ? Je propose donc de remplacer tous les "for fichier in *.jpg *.png" par "for fichier in *.jpg *.png *.JPG *.PNG"

Sur le principe je suis d'accord, mais comme expliqué en début de post, pour mon usage personnel cela ne le fait pas.

Lapogne71 a écrit :

3) "Renomme en masse sur X chiffres"
==> le nom original est écrasé et remplacé par un nombre... il aurait mieux valu rajouter ce nombre au nom existant, ou au moins garder une partie significative du nom existant.

Je me suis posé la question aussi sur ce point. Mais bon, au final je me suis dit que le nom original d'un fichier venant d'un APN (en général sous la forme IMG54682.JPG) n'était pas vraiment significatif justement big_smile. En tout cas de mon coté je n'en ai absolument pas besoin, et même cela alourdit inutilement le nom du fichier.
Ceci dit je vais réfléchir à une option qui récupérerait le nom original, pour l'écrire dans un champ IPTC

Lapogne71 a écrit :

4) "Renomme dans l'ordre chronologique des photos venant d'APN différents"
==> idem, le nom d'origine est écrasé !

Même réponse que le point 3 wink

Lapogne71 a écrit :

5) "Changer la date : Année et/ou mois et/ou jour (heures/minutes/secondes non changés) (jpg)"
==> ton script n'agit que sur les png ! smile

Mouarff, là aussi grossière erreur de ma part big_smile


Je vais mettre en ligne prochainement une nouvelle version, dans laquelle les fonctionnalités qui ne marchaient pas encore sur la version 0.1 sont maintenant opérationnelles.
NE MARCHE PLUS AVEC KARMIC Génére un fichier pdf des photos du répertoire
PAS FAIT Créer un dossier contenant une copie des photos jpg au format png
PAS FAIT Créer un dossier contenant une copie des photos png au format jpg

J'y inclurai les modifs des bugs que tu m'as signalé.

Merci encore pour ta participation smile

Dernière modification par soupaloignon (Le 11/04/2010, à 13:13)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#10 Le 10/06/2010, à 17:56

soupaloignon

Re : Script : Un script multi fonction pour travailler sur des images

Bonjour à tous, voici une nouvelle version du script SP-MSI V 0.3 (la version 0.2 n'a pas été distribuée)

N'hésitez pas à faire vos retours, vos idées de nouvelles fonctionnalités ou d'optimisation de fonctionnalités existantes.


Utilisation : Se placer dans le répertoire contenant les photos à traiter, lancer le script. Inutile de sélectionner les photos, le script va travailler sur toutes les photos contenues dans le répertoire (et uniquement dans le répertoire, il n'est pas récursif)

Testé avec : Karmic et Lucid (Mint 9)


Fonctionnalités :
Ranger des photos en vrac dans des dossiers datés (année, mois, jour)
Changer la casse : JPG, JPEG, jpeg => jpg / PNG => png
Rajouter un intitulé devant le nom original (jpg et png)
Renommer en masse sur X chiffres au choix (jpg et png)
Génére un fichier pdf optimisé des photos (800 X 600) du répertoire (jpg et png)
Générer une planche contact en .jpg des images du répertoire (jpg et png)
Créer un dossier contenant une copie des photos, retaillées (jpg et png)
Renommer dans l'ordre chronologique des photos venant d'APN différents (jpg)
Changer la date : Année et/ou mois et/ou jour (heures/minutes/secondes non changés) (jpg)
Changer la date et l'heure (Heures, minutes et secondes seront les mêmes pour toutes les photos)(jpg)
Voir les champs dates des données Exif (jpg)
Convertir les jpg en png (n'efface pas les originaux)
Convertir les png en jpg (80%) (n'efface pas les originaux)

Nouvelles fonctionnalités de cette version :
Génére un fichier pdf des photos du répertoire (Ne fonctionnait pas dans la version 0.1)
Créer un dossier contenant une copie des photos jpg au format png
Créer un dossier contenant une copie des photos png au format jpg
Ranger des photos en vrac dans un répertoire, dans des dossiers datés (année, mois, jour)
Corrections de bugs

Prochaines fonctionnalités :
Optimiser la compression lors de la création des png
Affiner les fonctionnalités exif
Pouvoir continuer à utiliser le script lorsque l'on change de répertoire de travail (à l'heure actuelle il faut fermer le script, et le relancer à partir du nouveau répertoire de travail). Si vous avez des infos la dessus je suis preneur.


#!/bin/bash

####################################################################################
#
# SP-MSI (SouPaloignon-MultiScriptImages ;))
# Permet de travailler sur des photos venant d'APN (renommer, classer, etc...)
#
# Dépendances :
# zenity jhead exiv2 imagemagick sed libimage-exiftool-perl
#
# Version :
# 0.3 : 2010/06/10
# 0.2 : 2010/04/27 (version non distribuée)
# 0.1 : 2010/04/01
#
# Utilisation :
# Se placer dans le répertoire contenant les photos à traiter, lancer le script.
# Inutile de sélectionner les photos, le script va travailler sur toutes les photos
# contenues dans le répertoire (et uniquement dans le répertoire, il n'est pas récursif)
#
# Le script travaille beaucoup sur les données exif des photos,
# donc si celles ci sont fausses le résultat ne sera pas terrible ;)
#
# Le script travaille en modifiant la casse des extensions des fichiers (majuscule en minuscule), c'est voulu
# si ce comportement ne vous convient pas, n'utilisez pas ce script, ou modifiez-le ;)
#
# Le fil de discussion sur le forum d'Ubuntu fr : 
# http://forum.ubuntu-fr.org/viewtopic.php?pid=3371321
#
# L'historique du script :
# http://soupaloignon.net/web2/articles/articles.php?id=28&cat=3
#
# Testé sous Lucid (Mint 9)
#
# www.soupaloignon.net
####################################################################################


####################################################################################
###### Mettre tout le script dans une boucle #######################################

while [ "$fin_du_script" != "oui" ]
do
####################################################################################


####################################################################################
###### Variable(s) générale(s) #####################################################

# Titre des fenêtres zenity
title="SP-MSI (V 0.3)"
####################################################################################


####################################################################################
###### Afficher le menu ############################################################
            
    menu=`zenity --width=750 --height=500 \
    --title "$title [SouPaloignon - Multi Script Images]" --text="Choisir l'action à effectuer" --list --hide-column 1 --column "" --column "" \
    0 "QUITTER LE SCRIPT" \
    1 "" \
    2 "Ranger des photos en vrac dans des dossiers datés (année, mois, jour)" \
    3 "Changer la casse : JPG, JPEG, jpeg => jpg / PNG => png" \
    4 "Rajouter un intitulé devant le nom original (jpg et png)" \
    5 "Renommer en masse sur X chiffres au choix (jpg et png)" \
    6 "Génére un fichier pdf optimisé des photos (800 X 600) du répertoire (jpg et png)" \
    7 "Générer une planche contact en .jpg des images du répertoire (jpg et png)" \
    8 "Créer un dossier contenant une copie des photos, retaillées (jpg et png)" \
    9 "Renommer dans l'ordre chronologique des photos venant d'APN différents (jpg)"\
    10 "Changer la date : Année et/ou mois et/ou jour (heures/minutes/secondes non changés) (jpg)" \
    11 "Changer la date et l'heure (Heures, minutes et secondes seront les mêmes pour toutes les photos)(jpg)" \
    12 "Voir les champs dates des données Exif (jpg)" \
    13 "Convertir les jpg en png (n'efface pas les originaux)" \
    14 "Convertir les png en jpg (80%) (n'efface pas les originaux)" \
    15 "" \
    16 "A LIRE" \     
    | sed 's/ max//g' `

# Pour quitter
    if [ "$menu" = 0 ] ; then
    fin_du_script="oui"
    fi 

# Vérifier qu'un choix a été fait
    if [ ! "$menu" ]; then
    zenity --error --title="Erreur" --text="Choisissez une action"
    fi
####################################################################################

####################################################################################
###### Ranger des photos en vrac dans des dossiers datés (année, mois, jour) #######

# Choix du menu
if [ "$menu" = 2 ] ; then

# Eviter les problèmes avec des noms de fichiers comportants des espaces
IFS=$'\n'

# Transforme la casse et ou l'extension en jpg
ls -d *.JPG | sed 's/\(.*\).JPG$/mv "&" "\1.jpg"/' | sh
ls -d *.JPEG  | sed 's/\(.*\).JPEG$/mv "&" "\1.jpg"/' | sh
ls -d *.jpeg  | sed 's/\(.*\).jpeg$/mv "&" "\1.jpg"/' | sh

exiftool -r *.jpg '-FileName<${DateTimeOriginal}' -d "%Y-%m-%d /"

fi
####################################################################################
   
####################################################################################
###### Changer la casse ############################################################ 

# Choix du menu 
if [ "$menu" = 3 ] ; then 
 
# Transforme la casse et ou l'extension en jpg
ls -d *.JPG | sed 's/\(.*\).JPG$/mv "&" "\1.jpg"/' | sh
ls -d *.JPEG  | sed 's/\(.*\).JPEG$/mv "&" "\1.jpg"/' | sh
ls -d *.jpeg  | sed 's/\(.*\).jpeg$/mv "&" "\1.jpg"/' | sh

# Transforme la casse en png
ls -d *.PNG | sed 's/\(.*\).PNG$/mv "&" "\1.png"/' | sh

fi
####################################################################################

####################################################################################
###### Rajouter un intitulé devant le nom du fichier ############################### 

# Choix du menu 
if [ "$menu" = 4 ] ; then 

# Eviter les problemes avec des noms comportant des espaces 
IFS=$'\n'

## Texte à rajouter devant le nom du fichier
TEXTE=$(zenity --entry --width=500 --height=150 --title="$title : Intitulé devant le nom de fichier" --entry-text="" --text="Entrez le nom à rajouter devant vos fichiers :")
         if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi
# Boucle d'insertion
for fichier in `ls *.jpg *.png` 
do 
rename 's/^/'$TEXTE'/' $fichier
done

fi
####################################################################################


####################################################################################
###### Renomme en masse sur X chiffres #############################################
 
# Choix du menu   
if [ "$menu" = 5 ] ; then  

# Choix du nombre de caracteres
nombre=$(zenity --entry --width=500 --height=150 --title="$title : Nombre de chiffres" --entry-text="2" --text="Choisir sur quel nombre de chiffres seront renommés vos fichiers :" )
if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi

# Transforme la casse et ou l'extension en jpg
ls -d *.JPG | sed 's/\(.*\).JPG$/mv "&" "\1.jpg"/' | sh
ls -d *.JPEG  | sed 's/\(.*\).JPEG$/mv "&" "\1.jpg"/' | sh
ls -d *.jpeg  | sed 's/\(.*\).jpeg$/mv "&" "\1.jpg"/' | sh

# Transforme la casse en png
ls -d *.PNG | sed 's/\(.*\).PNG$/mv "&" "\1.png"/' | sh

# Boucle
let "indice=1"
for fichier in *.jpg *.png
do
         if [ -f "$fichier" ]; then
            extension=${fichier##*.}
            echo "$fichier" "=>" "$indice.$extension"
            mv "$fichier" `printf "%0"$nombre"d" $indice`".$extension"
            let "indice+=1"
        fi
done

fi
####################################################################################


####################################################################################
###### Génére un fichier pdf des photos du répertoire ##############################

# Choix du menu
if [ "$menu" = 6 ] ; then

# Nom du pdf
TEMPORAIRE='temporaire.pdf'
NOM='00-final.pdf'

# Transforme la casse et ou l'extension en jpg
ls -d *.JPG | sed 's/\(.*\).JPG$/mv "&" "\1.jpg"/' | sh
ls -d *.JPEG  | sed 's/\(.*\).JPEG$/mv "&" "\1.jpg"/' | sh
ls -d *.jpeg  | sed 's/\(.*\).jpeg$/mv "&" "\1.jpg"/' | sh

# Transforme la casse en png
ls -d *.PNG | sed 's/\(.*\).PNG$/mv "&" "\1.png"/' | sh

# Boucle
for i in "*.jpg *.png"
do
 convert $i -quality 80 -resize 800x600 +compress $TEMPORAIRE
 gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=$NOM $TEMPORAIRE;
 rm $TEMPORAIRE
done

fi
# Plus de détails sur cette portion de script :
# http://forum.ubuntu-fr.org/viewtopic.php?pid=2966157
####################################################################################


####################################################################################
###### Génére une planche contact en .jpg des images du répertoire (jpg et png)#####

# Choix du menu
if [ "$menu" = 7 ] ; then

# Nom du fichier final
NOM='00-planche-contact.jpg'

# Eviter les problèmes avec des noms de fichiers comportants des espaces
IFS=$'\n'

# Transforme la casse et ou l'extension en jpg
ls -d *.JPG | sed 's/\(.*\).JPG$/mv "&" "\1.jpg"/' | sh
ls -d *.JPEG  | sed 's/\(.*\).JPEG$/mv "&" "\1.jpg"/' | sh
ls -d *.jpeg  | sed 's/\(.*\).jpeg$/mv "&" "\1.jpg"/' | sh

# Transforme la casse en png
ls -d *.PNG | sed 's/\(.*\).PNG$/mv "&" "\1.png"/' | sh

# Go ;)
montage -label '%f' *.jpg *.png \
-tile 6x7 $NOM

fi
####################################################################################


####################################################################################
###### Créer un dossier contenant une copie des photos, retaillées #################

# Choix du menu
if [ "$menu" = 8 ] ; then

IFS="|"
    #title="Choix de la taille"
    VALEUR=`zenity --title "$title : Retailler des photos"  --text "Choisir la nouvelle taille des photos" --list --separator=" "  --height=250 --width=500 --column="Taille" "320x240" "450x338" "640x480" "800x600" "1024x768" | sed 's/ max//g' `
    # click sur le bouton abandon
        if [ "$?" != 0 ] ; then
        exit
        fi
    # si pas de taille sélectionnée
        if [ ! "$VALEUR" ]; then
        zenity --error --title="error" --text="Aucune taille n'a été sélectionnée. Sortie de cette option."
        fi

# Transforme la casse et ou l'extension en jpg
ls -d *.JPG | sed 's/\(.*\).JPG$/mv "&" "\1.jpg"/' | sh
ls -d *.JPEG  | sed 's/\(.*\).JPEG$/mv "&" "\1.jpg"/' | sh
ls -d *.jpeg  | sed 's/\(.*\).jpeg$/mv "&" "\1.jpg"/' | sh

# Transforme la casse en png
ls -d *.PNG | sed 's/\(.*\).PNG$/mv "&" "\1.png"/' | sh

# Création du répertoire / copie / se placer dans le repertoire
mkdir $VALEUR
cp -r *jpg *.png $VALEUR
cd $VALEUR

# Retailler à la valeur choisie
mogrify -resize $VALEUR *.jpg *.png

fi
####################################################################################


####################################################################################
###### Renomme dans l'ordre chronologique des photos venant d'APN différents (jpg) #
###### par la date-heures-secondes de prise de vue #################################

# Choix du menu
if [ "$menu" = 9 ] ; then 

# Transforme la casse et ou l'extension en jpg
ls -d *.JPG | sed 's/\(.*\).JPG$/mv "&" "\1.jpg"/' | sh
ls -d *.JPEG  | sed 's/\(.*\).JPEG$/mv "&" "\1.jpg"/' | sh
ls -d *.jpeg  | sed 's/\(.*\).jpeg$/mv "&" "\1.jpg"/' | sh

# Renomme par date et heure exif (donc dans l'ordre chronologique)
# tous appareils confondus
exiv2 -r %Y-%m-%d--%H-%M-%S mv *.jpg

fi
####################################################################################


####################################################################################
###### Changer la date : Année et/ou mois et/ou jour ###############################
###### (heures/minutes/secondes non changés) (jpg) #################################
    
# Choix du menu
if [ "$menu" = 10 ] ; then    

## Entrer la date
DATE=$(zenity --entry --width=300 --height=150 --title="Date" --entry-text="" --text="Entrez la nouvelle date :\n\nDans un format AAAA pour ne changer que l'année\n(mois/jour/heures/minutes/secondes non changés)\n\nDans un format AAAA:MM pour ne changer que l'année et le mois\n(jour/heures/minutes/secondes non changés)\n\nDans un format AAAA:MM:JJ pour ne changer que l'année, le mois et le jour\n(heures/minutes/secondes non changées)\n\nAttention à bien mettre le \":\" (sans les guillements) entre les valeurs si nécessaire" )

         if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi

# Transforme la casse et ou l'extension en jpg
ls -d *.JPG | sed 's/\(.*\).JPG$/mv "&" "\1.jpg"/' | sh
ls -d *.JPEG  | sed 's/\(.*\).JPEG$/mv "&" "\1.jpg"/' | sh
ls -d *.jpeg  | sed 's/\(.*\).jpeg$/mv "&" "\1.jpg"/' | sh

# Go
jhead -ds$DATE *jpg

fi
####################################################################################


####################################################################################
###### Changer la date et l'heure (jpg) ############################################
  
# Choix du menu  
if [ "$menu" = 11 ] ; then  

## Entrer la date
DATE=$(zenity --entry --width=300 --height=150 --title="Date" --entry-text="2010:10:10" --text="Entrez la date dans un format AAAA:MM:JJ" )
         if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi

## Entrer l'heure
HEURE=$(zenity --entry --width=300 --height=150 --title="Heure" --entry-text="10:10:10" --text="Entrez la date dans un format HH:MM:SS" )
        if [ "${PIPESTATUS[0]}" != "0" ]; then
         exit
      fi

# Transforme la casse et ou l'extension en jpg
ls -d *.JPG | sed 's/\(.*\).JPG$/mv "&" "\1.jpg"/' | sh
ls -d *.JPEG  | sed 's/\(.*\).JPEG$/mv "&" "\1.jpg"/' | sh
ls -d *.jpeg  | sed 's/\(.*\).jpeg$/mv "&" "\1.jpg"/' | sh

# Go
exiv2 -M"set Exif.Image.DateTime $DATE $HEURE" -M"set Exif.Photo.DateTimeOriginal $DATE $HEURE" -M"set Exif.Photo.DateTimeDigitized $DATE $HEURE" *.jpg

fi
####################################################################################


####################################################################################
###### Voir les champs dates exif (jpg) ############################################
    
# Choix du menu 
if [ "$menu" = 12 ] ; then  

# Transforme la casse et ou l'extension en jpg
ls -d *.JPG | sed 's/\(.*\).JPG$/mv "&" "\1.jpg"/' | sh
ls -d *.JPEG  | sed 's/\(.*\).JPEG$/mv "&" "\1.jpg"/' | sh
ls -d *.jpeg  | sed 's/\(.*\).jpeg$/mv "&" "\1.jpg"/' | sh

# Go
#exiv2 -Plt *.jpg | sed -n '/Date and Time/p' | zenity --text-info --title ="exif" --width=700 --height=500
exiv2 -Plt *.jpg | sed -n '/Date*/p' | zenity --text-info --title ="exif" --width=700 --height=500

fi
####################################################################################


####################################################################################
###### jpg en png ##################################################################

# Choix du menu
if [ "$menu" = 13 ] ; then

# Eviter les problèmes avec des noms de fichiers comportants des espaces
IFS=$'\n'

# Transforme la casse et ou l'extension en jpg
ls -d *.JPG | sed 's/\(.*\).JPG$/mv "&" "\1.jpg"/' | sh
ls -d *.JPEG  | sed 's/\(.*\).JPEG$/mv "&" "\1.jpg"/' | sh
ls -d *.jpeg  | sed 's/\(.*\).jpeg$/mv "&" "\1.jpg"/' | sh

for file in *.jpg; do convert "$file" "$(basename $file .jpg).png"; done

mkdir png
mv *.png png

fi
####################################################################################


####################################################################################
###### Créer un dossier contenant une copie des photos png au format jpg ###########

# Choix du menu
if [ "$menu" = 14 ] ; then

# Eviter les problèmes avec des noms de fichiers comportants des espaces
IFS=$'\n'

# Transforme la casse en png
ls -d *.PNG | sed 's/\(.*\).PNG$/mv "&" "\1.png"/' | sh

for file in *.png; do convert -quality 80 "$file" "$(basename $file .png).jpg"; done

mkdir jpg
mv *.jpg jpg

fi
####################################################################################


####################################################################################
###### A LIRE ######################################################################

# Choix du menu 
if [ "$menu" = 16 ] ; then  

zenity --info --width=500 --height=150 --title="$title : Informations" --text="Merci d'utiliser ce script. Si vous avez des idées d'amélioration, voici le forum où cela se passe :\nhttp://forum.ubuntu-fr.org/viewtopic.php?pid=3371321\n\nCe script travaille sur des images en jpg et/ou png. C'est précisé à la fin de chaque fonction.\n\nTravaillant nativement sur des extensions en .jpg et/ou .png, ce script changera automatiquement la casse de ces 2 extensions s'il rencontre des majuscules dans lesfichiers à traiter.\n\nwww.soupaloignon.net"

fi
########################################################################


done 
exit 0

Dernière modification par soupaloignon (Le 10/06/2010, à 22:21)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#11 Le 31/07/2010, à 14:05

Jamay

Re : Script : Un script multi fonction pour travailler sur des images

Bonjour et merci pour la partage de ce script.

Je n'y connait rien en script mais j'aimerais le personnaliser un peu.
j'ai trouver un paquet qui permet de faire une rotation automatique de mes photos.

Quand je lance ça dans un terminal ça fonctionne et ca me fait une rotation de mes images suivant les données exif..
exiftran -ai *.jpg

j'aimerais l'ajouté au script mais je ne sais pas comment faire.
J'ai fait un essai mais ça ne fonctionne pas :

####################################################################################
###### Ranger des photos en vrac dans des dossiers datés (année, mois, jour) #######
######  + AUTO-ROTATION DES IMAGES


# Choix du menu
if [ "$menu" = 2 ] ; then

# Eviter les problèmes avec des noms de fichiers comportants des espaces
IFS=$'\n'

# Transforme la casse et ou l'extension en jpg
ls -d *.JPG | sed 's/\(.*\).JPG$/mv "&" "\1.jpg"/' | sh
ls -d *.JPEG  | sed 's/\(.*\).JPEG$/mv "&" "\1.jpg"/' | sh
ls -d *.jpeg  | sed 's/\(.*\).jpeg$/mv "&" "\1.jpg"/' | sh

exiftool -r *.jpg '-FileName<${DateTimeOriginal}' -d "%Y-%m-%d /"

# autorotation
exiftran -ai *.jpg


fi
####################################################################################

Hors ligne

#12 Le 03/08/2010, à 22:43

Jamay

Re : Script : Un script multi fonction pour travailler sur des images

Personne ne souhaite me donner un petit coup de main?
Ou peut-être m'aiguiller vers une page de la doc pour des rudiments de programmation?

Hors ligne

#13 Le 07/08/2010, à 14:27

soupaloignon

Re : Script : Un script multi fonction pour travailler sur des images

tu as essayé le script en enlevant la ligne d'exiftool ?


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#14 Le 22/02/2011, à 17:52

soupaloignon

Re : Script : Un script multi fonction pour travailler sur des images

Bonjour à tous, voici une nouvelle version du script SP-MSI.

Pour l'occasion il change de nom et devient MultiScript : Fichiers APN (j'ai fait un autre script multiple dans le même genre, mais qui concerne l'audio, d'où l'idée de prendre un nom plus générique + ce qu'il traite)

Je vous présente donc : MultiScript : Fichiers APN V 0.3.4

N'hésitez pas à faire vos retours, vos idées de nouvelles fonctionnalités ou d'optimisation de fonctionnalités existantes.

Utilisation : Se placer dans le répertoire contenant les photos à traiter, lancer le script. Inutile de sélectionner les photos, le script va travailler sur toutes les photos contenues dans le répertoire (et uniquement dans le répertoire, il n'est pas récursif)

Testé avec : Karmic et Lucid (Mint 9)

Fonctionnalités :
Ranger des photos en vrac dans des dossiers datés (année, mois, jour)
Changer la casse : JPG, JPEG, jpeg => jpg / PNG => png
Rajouter un intitulé devant le nom original (jpg et png)
Renommer en masse sur X chiffres au choix (jpg et png)
Génére un fichier pdf optimisé des photos (800 X 600) du répertoire (jpg et png)
Générer une planche contact en .jpg des images du répertoire (jpg et png)
Créer un dossier contenant une copie des photos, retaillées (jpg et png)
Renommer dans l'ordre chronologique des photos venant d'APN différents (jpg)
Changer la date : Année et/ou mois et/ou jour (heures/minutes/secondes non changés) (jpg)
Changer la date et l'heure (Heures, minutes et secondes seront les mêmes pour toutes les photos)(jpg)
Voir les champs dates des données Exif (jpg)
Convertir les jpg en png (n'efface pas les originaux)
Convertir les png en jpg (80%) (n'efface pas les originaux)
Effacer tous les champs EXIf et les commentaires IPTC (n'efface pas les originaux)

Nouvelles fonctionnalités de cette version :

Amélioration de la génération du fichier pdf des photos du répertoire
Effacer tous les champs EXIf et les commentaires IPTC
Rajouter un intitulé à la fin du nom original (jpg)
Quelques petits trucs en plus, mais j'ai pas pris la précaution de noter, donc je ne m'en souviens plus wink
Corrections de bugs


#!/bin/bash

####################################################################################
#
# MultiScript : Fichiers APN
# Permet de travailler sur des photos venant d'APN (renommer, classer, etc...)
#
# Dépendances :
# zenity jhead exiv2 imagemagick sed libimage-exiftool-perl
#
# Version :
# 0.3.4 2011/02/22
# 0.3 : 2010/06/10
# 0.2 : 2010/04/27 (version non distribuée)
# 0.1 : 2010/04/01
#
# Utilisation :
# Se placer dans le répertoire contenant les photos à traiter, lancer le script.
# Inutile de sélectionner les photos, le script va travailler sur toutes les photos
# contenues dans le répertoire (et uniquement dans le répertoire, il n'est pas récursif)
#
# Le script travaille beaucoup sur les données exif des photos,
# donc si celles ci sont fausses le résultat ne sera pas terrible ;)
#
# Le script travaille en modifiant la casse des extensions des fichiers (majuscule en minuscule), c'est voulu
# si ce comportement ne vous convient pas, n'utilisez pas ce script, ou modifiez-le ;)
#
# Prenez l'habitude de faire des manips sur des copies de fichiers
#
# Le fil de discussion sur le forum d'Ubuntu fr : 
# http://forum.ubuntu-fr.org/viewtopic.php?pid=3371321
#
# L'historique du script :
# http://soupaloignon.net/web/articles/articles.php?id=28&cat=3
#
# Testé sous Mint 9 (Lucid)
#
# www.soupaloignon.net
####################################################################################

###### Mettre tout le script dans une boucle #######################################

while [ "$fin_du_script" != "oui" ]
do
####################################################################################


####################################################################################
###### Variable(s) générale(s) #####################################################

# Titre des fenêtres zenity
title="MultiScript : Fichiers APN (V 0.3.4)"

# Installation des programmes manquants
INSTALL="gksudo apt-get install"
####################################################################################


####################################################################################
###### Function(s) #################################################################

function Casse-Extension
{
    # Transforme la casse et ou l'extension en jpg
ls -d *.JPG | sed 's/\(.*\).JPG$/mv "&" "\1.jpg"/' | sh
ls -d *.JPEG  | sed 's/\(.*\).JPEG$/mv "&" "\1.jpg"/' | sh
ls -d *.jpeg  | sed 's/\(.*\).jpeg$/mv "&" "\1.jpg"/' | sh

# Transforme la casse en png
ls -d *.PNG | sed 's/\(.*\).PNG$/mv "&" "\1.png"/' | sh
}
####################################################################################



####################################################################################
###### Afficher le menu ############################################################
            
    menu=`zenity --width=750 --height=800 \
    --title "$title" --text="Choisir l'action à effectuer" --list --hide-column 1 --column "" --column "" \
    0 "QUITTER LE SCRIPT" \
    1 "" \
    2 "Ranger des photos en vrac dans des dossiers datés (année, mois, jour)" \
    21 "" \
    3 "Changer la casse : JPG, JPEG, jpeg => jpg / PNG => png" \
    31 "Effacer TOUS les tags EXIF et IPTC (partiel) sur une copie du dossier (jpg)" \
    32 "" \
    4 "Rajouter un intitulé devant le nom du fichier (jpg et png)" \
    41 "Rajouter un intitulé à la fin du nom du fichier (jpg)" \
    5 "Renommer en masse sur X chiffres au choix (jpg et png)" \
    9 "Renommer dans l'ordre chronologique des photos venant d'APN différents (jpg)"\
    52 "" \
    6 "Génére un fichier pdf optimisé des photos (800 X 600) du répertoire (jpg et png)" \
    7 "Générer une planche contact en .jpg des images du répertoire (jpg et png)" \
    81 "" \
    10 "Changer la date : Année et/ou mois et/ou jour (heures/minutes/secondes non changés) (jpg)" \
    11 "Changer la date et l'heure (Heures, minutes et secondes seront les mêmes pour toutes les photos)(jpg)" \
    12 "Avancer ou reculer les heures et/ou minutes et/ou secondes" \
    13 "Voir les champs dates des données Exif (jpg)" \
    131 "" \
    14 "Convertir les jpg en png (n'efface pas les originaux)" \
    15 "Convertir les png en jpg (80%) (n'efface pas les originaux)" \
    8 "Créer un dossier contenant une copie des photos, retaillées (jpg et png)" \
    16 "" \
    17 "A LIRE" \     
    | sed 's/ max//g' `

# Pour quitter
    if [ "$menu" = 0 ] ; then
    fin_du_script="oui"
    fi 

# Vérifier qu'un choix a été fait
    if [ ! "$menu" ]; then
    zenity --error --title="Erreur" --text="Choisissez une action"
    fi
####################################################################################

####################################################################################
###### Ranger des photos en vrac dans des dossiers datés (année, mois, jour) #######

# Choix du menu
if [ "$menu" = 2 ] ; then

# Eviter les problèmes avec des noms de fichiers comportants des espaces
IFS=$'\n'

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

exiftool -r *.jpg '-FileName<${DateTimeOriginal}' -d "%Y-%m-%d/"

fi
####################################################################################
   
####################################################################################
###### Changer la casse ############################################################ 

# Choix du menu 
if [ "$menu" = 3 ] ; then 
 
# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

fi
####################################################################################

####################################################################################
###### Effacer EXIF et IPTC ######################################################## 

# Choix du menu 
if [ "$menu" = 31 ] ; then 
 
# Eviter les problèmes avec des noms de fichiers comportants des espaces
IFS=$'\n'

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Création du répertoire / copie / se placer dans le repertoire
REP="No-EXIF"
mkdir $REP
cp -r *jpg $REP
cd $REP
exiv2 -d a *.jpg

fi
####################################################################################

####################################################################################
###### Rajouter un intitulé devant le nom du fichier ############################### 

# Choix du menu 
if [ "$menu" = 4 ] ; then 

# Eviter les problemes avec des noms comportant des espaces 
IFS=$'\n'

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

## Texte à rajouter devant le nom du fichier
TEXTE=$(zenity --entry --width=500 --height=150 --title="$title : Intitulé devant le nom de fichier" --entry-text="" --text="Entrez le nom à rajouter devant vos fichiers :")
         if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi
# Boucle d'insertion
for fichier in `ls *.jpg *.png` 
do 
rename 's/^/'$TEXTE'/' $fichier
done

fi
####################################################################################


####################################################################################
###### Rajouter un intitulé à la fin du nom du fichier ############################### 

# Choix du menu 
if [ "$menu" = 41 ] ; then 

# Eviter les problemes avec des noms comportant des espaces 
IFS=$'\n'

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

## Texte à rajouter à la fin du nom du fichier
TEXTEFIN=$(zenity --entry --width=500 --height=150 --title="$title : Intitulé à la fin du nom du fichier" --entry-text="" --text="Entrez l'intitulé à rajouter à la fin de chaque nom de fichier :")
         if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi

for file in *jpg *.png
do
base=`basename $file`
mv $file  ${base%.*}$TEXTEFIN.${base##*.}
done


fi
####################################################################################


####################################################################################
###### Renomme en masse sur X chiffres #############################################
 
# Choix du menu   
if [ "$menu" = 5 ] ; then  

# Choix du nombre de caracteres
nombre=$(zenity --entry --width=500 --height=150 --title="$title : Nombre de chiffres" --entry-text="2" --text="Choisir sur quel nombre de chiffres seront renommés vos fichiers :" )


if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Boucle
let "indice=1"
for fichier in *.jpg *.png
do
         if [ -f "$fichier" ]; then
            extension=${fichier##*.}
            echo "$fichier" "=>" "$indice.$extension"
            mv "$fichier" `printf "%0"$nombre"d" $indice`".$extension"
            let "indice+=1"
        fi
done






fi
####################################################################################


####################################################################################
###### Génére un fichier pdf des photos du répertoire ##############################

# Choix du menu
if [ "$menu" = 6 ] ; then

# Nom du pdf
TEMPORAIRE='temporaire.pdf'
NOM='00-final.pdf'

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Boucle
for i in "*.jpg *.png"
do
 #convert $i -quality 80 -geometry 800x600 +compress $TEMPORAIRE
 convert $i +compress $TEMPORAIRE
 gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=$NOM $TEMPORAIRE;
 rm $TEMPORAIRE
done

#-geometry a la place de -resize
#convert * fichier.pdf ==> respecte le rtatio de sphotos


fi
# Plus de détails sur cette portion de script :
# http://forum.ubuntu-fr.org/viewtopic.php?pid=2966157
####################################################################################


####################################################################################
###### Génére une planche contact en .jpg des images du répertoire (jpg et png)#####

# Choix du menu
if [ "$menu" = 7 ] ; then

# Nom du fichier final
NOM='00-planche-contact.jpg'

# Eviter les problèmes avec des noms de fichiers comportants des espaces
IFS=$'\n'

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Go ;)
montage -label '%f' *.jpg *.png \
-tile 6x7 $NOM

fi
####################################################################################


####################################################################################
###### Créer un dossier contenant une copie des photos, retaillées #################

# Choix du menu
if [ "$menu" = 8 ] ; then

IFS="|"
    #title="Choix de la taille"
    VALEUR=`zenity --title "$title : Retailler des photos"  --text "Choisir la nouvelle taille des photos" --list --separator=" "  --height=250 --width=500 --column="Taille" "320x240" "450x338" "640x480" "800x600" "1024x768" | sed 's/ max//g' `
    # click sur le bouton abandon
        if [ "$?" != 0 ] ; then
        exit
        fi
    # si pas de taille sélectionnée
        if [ ! "$VALEUR" ]; then
        zenity --error --title="error" --text="Aucune taille n'a été sélectionnée. Sortie de cette option."
        fi

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Création du répertoire / copie / se placer dans le repertoire
mkdir $VALEUR
cp -r *jpg *.png $VALEUR
cd $VALEUR

# Retailler à la valeur choisie
mogrify -quality 60 -resize $VALEUR *.jpg *.png
# 

fi
####################################################################################


####################################################################################
###### Renomme dans l'ordre chronologique des photos venant d'APN différents (jpg) #
###### par la date-heures-secondes de prise de vue #################################

# Choix du menu
if [ "$menu" = 9 ] ; then 

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Renomme par date et heure exif (donc dans l'ordre chronologique)
# tous appareils confondus
exiv2 -r %Y-%m-%d--%H-%M-%S mv *.jpg

fi
####################################################################################


####################################################################################
###### Changer la date : Année et/ou mois et/ou jour ###############################
###### (heures/minutes/secondes non changés) (jpg) #################################
    
# Choix du menu
if [ "$menu" = 10 ] ; then    

## Entrer la date
DATE=$(zenity --entry --width=300 --height=150 --title="Date" --entry-text="" --text="Entrez la nouvelle date :\n\nDans un format AAAA pour ne changer que l'année\n(mois/jour/heures/minutes/secondes non changés)\n\nDans un format AAAA:MM pour ne changer que l'année et le mois\n(jour/heures/minutes/secondes non changés)\n\nDans un format AAAA:MM:JJ pour ne changer que l'année, le mois et le jour\n(heures/minutes/secondes non changées)\n\nAttention à bien mettre le \":\" (sans les guillements) entre les valeurs si nécessaire" )

         if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Go
jhead -ds$DATE *jpg

fi
####################################################################################


####################################################################################
###### Changer la date et l'heure (jpg) ############################################
  
# Choix du menu  
if [ "$menu" = 11 ] ; then  

## Entrer la date
DATE=$(zenity --entry --width=300 --height=150 --title="Date" --entry-text="2010:10:10" --text="Entrez la date dans un format AAAA:MM:JJ" )
         if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi

## Entrer l'heure
HEURE=$(zenity --entry --width=300 --height=150 --title="Heure" --entry-text="10:10:10" --text="Entrez la date dans un format HH:MM:SS" )
        if [ "${PIPESTATUS[0]}" != "0" ]; then
         exit
      fi

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Go
exiv2 -M"set Exif.Image.DateTime $DATE $HEURE" -M"set Exif.Photo.DateTimeOriginal $DATE $HEURE" -M"set Exif.Photo.DateTimeDigitized $DATE $HEURE" *.jpg

fi
####################################################################################


####################################################################################
###### Changer les heures : En positif ou négatif ###############################

    
# Choix du menu
if [ "$menu" = 12 ] ; then    

## Entrer la valeur à rajouter ou retrancher
TEMPS=$(zenity --entry --width=300 --height=150 --title="Avancer ou reculer : Heure / Minute / Seconde" --entry-text="" --text="Entrez tout d'abord le symbole + ou - (pour rajouter ou enlever du temps) puis les valeurs de temps :\n\n+10 rajoutera 10 heures\n-10 enlévera 10 heures\n+00:10 rajoutera 10 minutes\n+00:00:10 rajoutera 10 secondes\n\nAttention à bien mettre le \":\" (sans les guillements) entre les valeurs si nécessaire" )

         if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Go
jhead -ta$TEMPS *.jpg

fi
####################################################################################

####################################################################################
###### Voir les champs dates exif (jpg) ############################################
    
# Choix du menu 
if [ "$menu" = 13 ] ; then  

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Go
#exiv2 -Plt *.jpg | sed -n '/Date and Time/p' | zenity --text-info --title ="exif" --width=700 --height=500
exiv2 -Plt *.jpg | sed -n '/Date*/p' | zenity --text-info --title ="exif" --width=700 --height=500

fi
####################################################################################


####################################################################################
###### jpg en png ##################################################################

# Choix du menu
if [ "$menu" = 14 ] ; then

# Eviter les problèmes avec des noms de fichiers comportants des espaces
IFS=$'\n'

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

for file in *.jpg; do convert "$file" "$(basename $file .jpg).png"; done

mkdir png
mv *.png png

fi
####################################################################################


####################################################################################
###### Créer un dossier contenant une copie des photos png au format jpg ###########

# Choix du menu
if [ "$menu" = 15 ] ; then

# Eviter les problèmes avec des noms de fichiers comportants des espaces
IFS=$'\n'

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

for file in *.png; do convert -quality 80 "$file" "$(basename $file .png).jpg"; done

mkdir jpg
mv *.jpg jpg

fi
####################################################################################


####################################################################################
###### A LIRE ######################################################################

# Choix du menu 
if [ "$menu" = 17 ] ; then  

zenity --info --width=500 --height=150 --title="$title : Informations" --text="Merci d'utiliser ce script. Si vous avez des idées d'amélioration, voici le forum où cela se passe :\nhttp://forum.ubuntu-fr.org/viewtopic.php?pid=3371321\n\nCe script travaille sur des images en jpg et/ou png. C'est précisé à la fin de chaque fonction.\n\nTravaillant nativement sur des extensions en .jpg et/ou .png, ce script changera automatiquement la casse de ces 2 extensions s'il rencontre des majuscules dans les fichiers à traiter.\n\nwww.soupaloignon.net"

fi
########################################################################


done 
exit 0

Dernière modification par soupaloignon (Le 22/02/2011, à 18:14)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#15 Le 03/12/2011, à 22:36

soupaloignon

Re : Script : Un script multi fonction pour travailler sur des images

Nouvelle version : 0.3.5
## Ajout de la fonction : Rajouter un intitulé devant le nom du fichier et renommer sur 2 chiffres
## Correction de la fonction : Générer un fichier pdf optimisé des photos
## Corrections mineures

Fonctionnalités :
Ranger des photos en vrac dans des dossiers datés (année, mois, jour) (jpg)
Changer la casse : JPG, JPEG, jpeg => jpg / PNG => png
Effacer TOUS les tags EXIF et IPTC (partiel) sur une copie du dossier (jpg)
Rajouter un intitulé devant le nom du fichier (jpg et png)
Rajouter un intitulé à la fin du nom du fichier (jpg et png)
Renommer en masse sur X chiffres au choix (jpg et png)
Renommer dans l'ordre chronologique des photos venant d'APN différents (jpg)\
Rajouter un intitulé devant le nom du fichier et renommer sur 2 chiffres (jpg et png)\
Générer un fichier pdf optimisé des photos (800 X 600) du répertoire (jpg et png)
Générer une planche contact en .jpg des images du répertoire (jpg et png)
Changer la date : Année et/ou mois et/ou jour (heures/minutes/secondes non changés) (jpg)
Changer la date et l'heure (Heures, minutes et secondes seront les mêmes pour toutes les photos)(jpg)
Avancer ou reculer les heures et/ou minutes et/ou secondes (jpg)
Voir les champs dates des données Exif (jpg)
Convertir les jpg en png (n'efface pas les originaux)
Convertir les png en jpg (80%) (n'efface pas les originaux)
Créer un dossier contenant une copie des photos, retaillées (jpg et png)


N'hésitez pas à faire vos retours, vos idées de nouvelles fonctionnalités ou d'optimisation de fonctionnalités existantes.

Utilisation : Se placer dans le répertoire contenant les photos à traiter, lancer le script. Inutile de sélectionner les photos, le script va travailler sur toutes les photos contenues dans le répertoire (et uniquement dans le répertoire, il n'est pas récursif)

Testé avec : Karmic et Lucid (Mint 9)


#!/bin/bash

####################################################################################
#
# MultiScript : Fichiers Images
# Permet de travailler sur des photos venant d'APN (renommer, classer, etc...)
#
# Dépendances :
# zenity jhead exiv2 imagemagick sed libimage-exiftool-perl
#
# Version :
# 0.3.5 2011/12/03
## Ajout de la fonction : Rajouter un intitulé devant le nom du fichier et renommer sur 2 chiffres
## Correction de la fonction : Générer un fichier pdf optimisé des photos
## Corrections mineures
#
# 0.3.4 2011/02/22
# 0.3 : 2010/06/10
# 0.2 : 2010/04/27 (version non distribuée)
# 0.1 : 2010/04/01
#
# Utilisation :
# Se placer dans le répertoire contenant les photos à traiter, lancer le script.
# Inutile de sélectionner les photos, le script va travailler sur toutes les photos
# contenues dans le répertoire (et uniquement dans le répertoire, il n'est pas récursif)
#
# Le script travaille beaucoup sur les données exif des photos,
# donc si celles ci sont fausses le résultat ne sera pas terrible ;)
#
# Le script travaille en modifiant la casse des extensions des fichiers (majuscule en minuscule), c'est voulu
# si ce comportement ne vous convient pas, n'utilisez pas ce script, ou modifiez-le ;)
#
# Prenez l'habitude de faire des manips sur des copies de fichiers
#
# Le fil de discussion sur le forum d'Ubuntu fr : 
# http://forum.ubuntu-fr.org/viewtopic.php?pid=3371321
#
# L'historique du script :
# http://soupaloignon.net/web/articles/articles.php?id=28&cat=3
#
# Testé sous Mint 9 (Lucid)
#
# www.soupaloignon.net
####################################################################################


####################################################################################
###### Mettre tout le script dans une boucle #######################################

while [ "$fin_du_script" != "oui" ]
do
####################################################################################


####################################################################################
###### Variable(s) générale(s) #####################################################

# Titre des fenêtres zenity
title="MultiScript : Fichiers photos (V 0.3.5)"

####################################################################################


####################################################################################
###### Function(s) #################################################################

function Casse-Extension
{
    # Transforme la casse et ou l'extension en jpg
ls -d *.JPG | sed 's/\(.*\).JPG$/mv "&" "\1.jpg"/' | sh
ls -d *.JPEG  | sed 's/\(.*\).JPEG$/mv "&" "\1.jpg"/' | sh
ls -d *.jpeg  | sed 's/\(.*\).jpeg$/mv "&" "\1.jpg"/' | sh

# Transforme la casse en png
ls -d *.PNG | sed 's/\(.*\).PNG$/mv "&" "\1.png"/' | sh
}
####################################################################################



####################################################################################
###### Afficher le menu ############################################################
            
    menu=`zenity --width=750 --height=800 \
    --title "$title" --text="Choisir l'action à effectuer" --list --hide-column 1 --column "" --column "" \
    0 "QUITTER LE SCRIPT (V 0.3.5)" \
    1 "" \
    2 "Ranger des photos en vrac dans des dossiers datés (année, mois, jour) (jpg)" \
    21 "" \
    3 "Changer la casse : JPG, JPEG, jpeg => jpg / PNG => png" \
    31 "Effacer TOUS les tags EXIF et IPTC (partiel) sur une copie du dossier (jpg)" \
    32 "" \
    4 "Rajouter un intitulé devant le nom du fichier (jpg et png)" \
    41 "Rajouter un intitulé à la fin du nom du fichier (jpg et png)" \
    5 "Renommer en masse sur X chiffres au choix (jpg et png)" \
    9 "Renommer dans l'ordre chronologique des photos venant d'APN différents (jpg)"\
        51 "Rajouter un intitulé devant le nom du fichier et renommer sur 2 chiffres (jpg et png)"\
    52 "" \
    6 "Générer un fichier pdf optimisé des photos (800 X 600) du répertoire (jpg et png)" \
    7 "Générer une planche contact en .jpg des images du répertoire (jpg et png)" \
    81 "" \
    10 "Changer la date : Année et/ou mois et/ou jour (heures/minutes/secondes non changés) (jpg)" \
    11 "Changer la date et l'heure (Heures, minutes et secondes seront les mêmes pour toutes les photos)(jpg)" \
    12 "Avancer ou reculer les heures et/ou minutes et/ou secondes (jpg)" \
    13 "Voir les champs dates des données Exif (jpg)" \
    131 "" \
    14 "Convertir les jpg en png (n'efface pas les originaux)" \
    15 "Convertir les png en jpg (80%) (n'efface pas les originaux)" \
    8 "Créer un dossier contenant une copie des photos, retaillées (jpg et png)" \
    16 "" \
    17 "A LIRE" \     
    | sed 's/ max//g' `

# Pour quitter
    if [ "$menu" = 0 ] ; then
    fin_du_script="oui"
    fi 

# Vérifier qu'un choix a été fait
    if [ ! "$menu" ]; then
    zenity --error --title="Erreur" --text="Choisissez une action"
    fi
####################################################################################

####################################################################################
###### Ranger des photos en vrac dans des dossiers datés (année, mois, jour) #######

# Choix du menu
if [ "$menu" = 2 ] ; then

# Eviter les problèmes avec des noms de fichiers comportants des espaces
IFS=$'\n'

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

exiftool -r *.jpg '-FileName<${DateTimeOriginal}' -d "%Y-%m-%d/"

fi
####################################################################################
   
####################################################################################
###### Changer la casse ############################################################ 

# Choix du menu 
if [ "$menu" = 3 ] ; then 
 
# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

fi
####################################################################################

####################################################################################
###### Effacer EXIF et IPTC ######################################################## 

# Choix du menu 
if [ "$menu" = 31 ] ; then 
 
# Eviter les problèmes avec des noms de fichiers comportants des espaces
IFS=$'\n'

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Création du répertoire / copie / se placer dans le repertoire
REP="No-EXIF"
mkdir $REP
cp -r *jpg $REP
cd $REP
exiv2 -d a *.jpg

fi
####################################################################################

####################################################################################
###### Rajouter un intitulé devant le nom du fichier ############################### 

# Choix du menu 
if [ "$menu" = 4 ] ; then 

# Eviter les problemes avec des noms comportant des espaces 
IFS=$'\n'

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

## Texte à rajouter devant le nom du fichier
TEXTE=$(zenity --entry --width=500 --height=150 --title="$title : Intitulé devant le nom de fichier" --entry-text="" --text="Entrez le nom à rajouter devant vos fichiers :")
         if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi
# Boucle d'insertion
for fichier in `ls *.jpg *.png` 
do 
rename 's/^/'$TEXTE'/' $fichier
done

fi
####################################################################################


####################################################################################
###### Rajouter un intitulé à la fin du nom du fichier ############################### 

# Choix du menu 
if [ "$menu" = 41 ] ; then 

# Eviter les problemes avec des noms comportant des espaces 
IFS=$'\n'

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

## Texte à rajouter à la fin du nom du fichier
TEXTEFIN=$(zenity --entry --width=500 --height=150 --title="$title : Intitulé à la fin du nom du fichier" --entry-text="" --text="Entrez l'intitulé à rajouter à la fin de chaque nom de fichier :")
         if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi

for file in *jpg *.png
do
base=`basename $file`
mv $file  ${base%.*}$TEXTEFIN.${base##*.}
done


fi
####################################################################################


####################################################################################
###### Renomme en masse sur X chiffres #############################################
 
# Choix du menu   
if [ "$menu" = 5 ] ; then  

# Choix du nombre de caracteres
nombre=$(zenity --entry --width=500 --height=150 --title="$title : Nombre de chiffres" --entry-text="2" --text="Choisir sur quel nombre de chiffres seront renommés vos fichiers :" )


if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Boucle
let "indice=1"
for fichier in *.jpg *.png
do
         if [ -f "$fichier" ]; then
            extension=${fichier##*.}
            echo "$fichier" "=>" "$indice.$extension"
            mv "$fichier" `printf "%0"$nombre"d" $indice`".$extension"
            let "indice+=1"
        fi
done






fi
####################################################################################


####################################################################################
###### Génére un fichier pdf des photos du répertoire ##############################

# Choix du menu
if [ "$menu" = 6 ] ; then

# Nom du pdf
TEMPORAIRE='temporaire.pdf'
NOM='00-final.pdf'

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Boucle
for i in "*.jpg *.png"
do
 #convert $i -quality 80 -geometry 800x600 +compress $TEMPORAIRE
 convert $i +compress $TEMPORAIRE
 gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=$NOM $TEMPORAIRE
 rm $TEMPORAIRE
done

#-geometry a la place de -resize
#convert * fichier.pdf ==> respecte le rtatio de sphotos


fi
# Plus de détails sur cette portion de script :
# http://forum.ubuntu-fr.org/viewtopic.php?pid=2966157
####################################################################################


####################################################################################
###### Génére une planche contact en .jpg des images du répertoire (jpg et png)#####

# Choix du menu
if [ "$menu" = 7 ] ; then

# Nom du fichier final
NOM='00-planche-contact.jpg'

# Eviter les problèmes avec des noms de fichiers comportants des espaces
IFS=$'\n'

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Go ;)
montage -label '%f' *.jpg *.png \
-tile 6x7 $NOM

fi
####################################################################################


####################################################################################
###### Créer un dossier contenant une copie des photos, retaillées #################

# Choix du menu
if [ "$menu" = 8 ] ; then

IFS="|"
    #title="Choix de la taille"
    VALEUR=`zenity --title "$title : Retailler des photos"  --text "Choisir la nouvelle taille des photos" --list --separator=" "  --height=250 --width=500 --column="Taille" "320x240" "450x338" "640x480" "800x600" "1024x768" | sed 's/ max//g' `
    # click sur le bouton abandon
        if [ "$?" != 0 ] ; then
        exit
        fi
    # si pas de taille sélectionnée
        if [ ! "$VALEUR" ]; then
        zenity --error --title="error" --text="Aucune taille n'a été sélectionnée. Sortie de cette option."
        fi

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Création du répertoire / copie / se placer dans le repertoire
mkdir $VALEUR
cp -r *jpg *.png $VALEUR
cd $VALEUR

# Retailler à la valeur choisie
mogrify -quality 60 -resize $VALEUR *.jpg *.png
# 

fi
####################################################################################


####################################################################################
###### Renomme dans l'ordre chronologique des photos venant d'APN différents (jpg) #
###### par la date-heures-secondes de prise de vue #################################

# Choix du menu
if [ "$menu" = 9 ] ; then 

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Renomme par date et heure exif (donc dans l'ordre chronologique)
# tous appareils confondus
exiv2 -r %Y-%m-%d--%Hh-%Mm-%Ss mv *.jpg

fi
####################################################################################


####################################################################################
###### Rajouter un intitulé devant le nom du fichier et renommer sur 2 chiffres) ##


# Choix du menu
if [ "$menu" = 51 ] ; then 

if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi

## Texte à rajouter devant le nom du fichier
TEXTE=$(zenity --entry --width=500 --height=150 --title="$title : Intitulé devant le nom de fichier" --entry-text="" --text="Entrez le nom à rajouter devant vos fichiers :")

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Boucle
let "indice=1"
for fichier in *.jpg *.png
do
         if [ -f "$fichier" ]; then
            extension=${fichier##*.}
            echo "$fichier" "=>" "$indice.$extension"
            mv "$fichier" `printf "%0"2"d" $indice`".$extension"
            let "indice+=1"
        fi
done

# Boucle d'insertion
for fichier in `ls *.jpg *.png` 
do 
rename 's/^/'$TEXTE'/' $fichier
done




fi
####################################################################################





####################################################################################
###### Changer la date : Année et/ou mois et/ou jour ###############################
###### (heures/minutes/secondes non changés) (jpg) #################################
    
# Choix du menu
if [ "$menu" = 10 ] ; then    

## Entrer la date
DATE=$(zenity --entry --width=300 --height=150 --title="Date" --entry-text="" --text="Entrez la nouvelle date :\n\nDans un format AAAA pour ne changer que l'année\n(mois/jour/heures/minutes/secondes non changés)\n\nDans un format AAAA:MM pour ne changer que l'année et le mois\n(jour/heures/minutes/secondes non changés)\n\nDans un format AAAA:MM:JJ pour ne changer que l'année, le mois et le jour\n(heures/minutes/secondes non changées)\n\nAttention à bien mettre le \":\" (sans les guillements) entre les valeurs si nécessaire" )

         if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Go
jhead -ds$DATE *jpg

fi
####################################################################################


####################################################################################
###### Changer la date et l'heure (jpg) ############################################
  
# Choix du menu  
if [ "$menu" = 11 ] ; then  

## Entrer la date
DATE=$(zenity --entry --width=300 --height=150 --title="Date" --entry-text="2010:10:10" --text="Entrez la date dans un format AAAA:MM:JJ" )
         if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi

## Entrer l'heure
HEURE=$(zenity --entry --width=300 --height=150 --title="Heure" --entry-text="10:10:10" --text="Entrez la date dans un format HH:MM:SS" )
        if [ "${PIPESTATUS[0]}" != "0" ]; then
         exit
      fi

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Go
exiv2 -M"set Exif.Image.DateTime $DATE $HEURE" -M"set Exif.Photo.DateTimeOriginal $DATE $HEURE" -M"set Exif.Photo.DateTimeDigitized $DATE $HEURE" *.jpg

fi
####################################################################################


####################################################################################
###### Changer les heures : En positif ou négatif ###############################

    
# Choix du menu
if [ "$menu" = 12 ] ; then    

## Entrer la valeur à rajouter ou retrancher
TEMPS=$(zenity --entry --width=300 --height=150 --title="Avancer ou reculer : Heure / Minute / Seconde" --entry-text="" --text="Entrez tout d'abord le symbole + ou - (pour rajouter ou enlever du temps) puis les valeurs de temps :\n\n+10 rajoutera 10 heures\n-10 enlévera 10 heures\n+00:10 rajoutera 10 minutes\n+00:00:10 rajoutera 10 secondes\n\nAttention à bien mettre le \":\" (sans les guillements) entre les valeurs si nécessaire" )

         if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Go
jhead -ta$TEMPS *.jpg

fi
####################################################################################

####################################################################################
###### Voir les champs dates exif (jpg) ############################################
    
# Choix du menu 
if [ "$menu" = 13 ] ; then  

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Go
#exiv2 -Plt *.jpg | sed -n '/Date and Time/p' | zenity --text-info --title ="exif" --width=700 --height=500
exiv2 -Plt *.jpg | sed -n '/Date*/p' | zenity --text-info --title ="exif" --width=700 --height=500

fi
####################################################################################


####################################################################################
###### jpg en png ##################################################################

# Choix du menu
if [ "$menu" = 14 ] ; then

# Eviter les problèmes avec des noms de fichiers comportants des espaces
IFS=$'\n'

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

for file in *.jpg; do convert "$file" "$(basename $file .jpg).png"; done

mkdir png
mv *.png png

fi
####################################################################################


####################################################################################
###### Créer un dossier contenant une copie des photos png au format jpg ###########

# Choix du menu
if [ "$menu" = 15 ] ; then

# Eviter les problèmes avec des noms de fichiers comportants des espaces
IFS=$'\n'

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

for file in *.png; do convert -quality 80 "$file" "$(basename $file .png).jpg"; done

mkdir jpg
mv *.jpg jpg

fi
####################################################################################


####################################################################################
###### A LIRE ######################################################################

# Choix du menu 
if [ "$menu" = 17 ] ; then  

zenity --info --width=500 --height=150 --title="$title : Informations" --text="Merci d'utiliser ce script. Si vous avez des idées d'amélioration, voici le forum où cela se passe :\nhttp://forum.ubuntu-fr.org/viewtopic.php?pid=3371321\n\nCe script travaille sur des images en jpg et/ou png. C'est précisé à la fin de chaque fonction.\n\nTravaillant nativement sur des extensions en .jpg et/ou .png, ce script changera automatiquement la casse de ces 2 extensions s'il rencontre des majuscules dans les fichiers à traiter.\n\nwww.soupaloignon.net"

fi
########################################################################


done 
exit 0

Dernière modification par soupaloignon (Le 06/12/2011, à 07:30)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#16 Le 15/01/2012, à 03:41

delco2

Re : Script : Un script multi fonction pour travailler sur des images

Changer la casse : JPG, JPEG, jpeg => jpg / PNG => png


Bonjour,
            merci pour ce script j'aimerais savoir comment modifier le script pour faire en sorte que ils modifier seulement 1 fichier a la foi exemple le fichier que je clic bouton droit sur le .jpg et si tu le veux bien (propriétaire du script) merci pour info.

Gilles

Hors ligne

#17 Le 16/01/2012, à 19:40

A.

Re : Script : Un script multi fonction pour travailler sur des images

soupaloignon a écrit :

N'hésitez pas à faire vos retours, vos idées de nouvelles fonctionnalités ou d'optimisation de fonctionnalités existantes.

Bonjour,

L'outil semble intéressant.
Je profite du fait qu'on puisse proposer des idées pour faire une suggestion.
L'idée serait de modifier rapidement les mots clés de plusieurs images en passant par un affichage du style de celui de zenity.

Je n'y connais pas grand chose mais à partir de ce script et du script de Riicooo permettant de renommer une sélection de fichiers comme un texte on doit pouvoir s'en sortir. Je vais essayer de tester ça mais sans assurance de résultat.

Hors ligne

#18 Le 30/09/2013, à 07:55

BZH36

Re : Script : Un script multi fonction pour travailler sur des images

Bonjour
j'ai essayé le script
mais la seule qui m'intéresse ne fonctionne pas : Ranger des photos en vrac dans des dossiers datés (année, mois, jour)
par contre le script fonctionne (par exemple) pour la création d'un répertoire avec modif de la résolution.
Pour le 1er cas je n'ai aucun message d'erreur.
Je suis en 13.04
Merci le Bzh36

Hors ligne

#19 Le 12/01/2014, à 21:41

soupaloignon

Re : Script : Un script multi fonction pour travailler sur des images

boonsoir BZH36,

Désolé pour la réponse tardive.

Es-tu sur d'avoir exiftool d'installé ? Si oui est ce que tes photos ont des métadonnées exif?


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne