Bonjour,

J'aimerais traiter toutes les images .jpg contenues dans le répertoire "images_sources" avec la commande
Code : Sélectionner tout - Visualiser dans une fenêtre à part
  jpegtran -copy all -optimize -progressive -trim -drop +0+2304 nadir.jpg "$img" > "$output_img"
Le fichier 'nadir.jpg' est à la racine du projet, il ne change jamais. L'image contenue dans le répertoire 'images_sources' est patchée avec 'nadir.jpg' et le résultat est exporté dans le répertoire 'images_traitees'

J'ai bricolé un script mais il ne traite que la première image du répertoire source. Comme le modifier pour qu'elle soient toutes traitées une par une ?

le script en question :

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
#!/bin/bash
 
# Vérifier si le répertoire contenant les images existe
if [ ! -d "images_source" ]; then
  echo "Erreur : Le répertoire 'images_source' n'existe pas."
  exit 1
fi
 
# Créer le répertoire 'images_traitees' s'il n'existe pas déjà
if [ ! -d "images_traitees" ]; then
  mkdir images_traitees
fi
 
# Créer une liste de toutes les images .jpg dans le répertoire images_source
images_to_process=()
for img in images_source/*.jpg; do
  # Vérifier si l'image existe avant de l'ajouter
  if [ -f "$img" ]; then
    images_to_process+=("$img")
  fi
done
 
# Si aucune image n'a été trouvée
if [ ${#images_to_process[@]} -eq 0 ]; then
  echo "Aucune image .jpg trouvée dans le répertoire 'images_source'."
  exit 1
fi
 
# Traiter chaque image avec jpegtran et incrémenter le nom du fichier de sortie dans 'images_traitees'
counter=1
for img in "${images_to_process[@]}"; do
  output_img="images_traitees/image_nouvelle_${counter}.jpg"
 
  # Traiter l'image
  jpegtran -copy all -optimize -progressive -trim -drop +0+2304 nadir.jpg "$img" > "$output_img"
 
  # Vérifier si la commande a réussi
  if [ $? -eq 0 ]; then
    echo "L'image $img a été traitée et sauvegardée sous '$output_img'."
  else
      echo "Une erreur est survenue lors du traitement de $img."
  fi
 
  # Incrémenter le compteur pour le nom du fichier suivant
  ((counter++))
done