Forum Astuces.divers Aide pour commande

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
2
3
jan.
2023

Bonjour,

j'utilise cette commande pour améliorer mes pauvres photos prises avec mon smartphone :

convert -auto-gamma -auto-level -normalize j.jpg improved.jpg

Et cela marche bien, la qualité de mes photos est légèrement améliorée.

Mais je voudrais pouvoir traiter en une seule fois toutes les photos dans un dossier, comment faire ?

Merci.

  • # hop, facile

    Posté par  (site web personnel, Mastodon) . Évalué à 6.

    Une variante de de la commande convert permet de traiter une foultitude d'images d'un coup, mais il faut être très prudent : elle ne fait pas de copie des fichiers d'origine, elle écrase avec le résultat !

    $ mogrify -auto-gamma -auto-level -normalize *.jpg

    • [^] # Re: hop, facile

      Posté par  . Évalué à 2.

      mais il faut être très prudent

      Merci. Oui, je copie les photos avant dans un dossier "travail" pour être sur de ne rien perdre.

      arnauld

  • # script pour conversion

    Posté par  . Évalué à 2. Dernière modification le 03 janvier 2023 à 02:31.

    Bonjour

    Tel que tu poses le problème, il faudrait donner un nom différent à chacune des photographies converties, c'est possible, mais ça ne serait pas facile à gérer si la conversion ne convenait pas à ce que tu attendais.

    Je te propose de garder le même nom pour chacune des photographies converties et de mettre chacune des photos converties dans un sous-répertoire nommé "converties" (qui sera automatiquement créé si besoin).

    De cette façon, tu pourras facilement voir ce que la conversion a donné,
    et si besoin supprimer toutes les photographies originales pour les remplacer par celle converties simplement en utilisant ton navigateur de fichier.

    Ci-dessous, le contenu du script que je te propose, dans lequel tu pourras changer les valeurs des premières variables pour les adapter à ta convenance.

    #!/bin/bash
    
    extImg="jpg"                                # Nom d'extension des photographies
    repSource="."                               # Répertoire dans lequel sont les photographies à convertir
    repCible="$repSource/converties"            # Répertoire dans lequel seront les photographies converties
    
    test -d "$repCible" || mkdir "$repCible"    # Pour créer le répertoire cible s'il n'existe pas encore
    
    for photo in "$repSource"/*.$extImg; do
        convert -auto-gamma -auto-level -normalize "$photo" "$repCible/${photo##*/}"
    done
  • # GNU parallel

    Posté par  . Évalué à 5.

    Pour accélérer considérablement le traitement (si tu as beaucoup d'images) tu peux utiliser GNU parallel qui va répartir la tâche sur plusieurs cœurs du CPU :

    ls *.jpg | parallel "mogrify -auto-gamma -auto-level -normalize"

    • [^] # Re: GNU parallel

      Posté par  (site web personnel) . Évalué à 5. Dernière modification le 03 janvier 2023 à 10:01.

      Attention, la commande va se mettre à donner des résultats bizarres dès que tu auras des espaces dans le nom de fichier. Quitte à utiliser une redirection, je préfère le couple find / xargs qui te permet aussi d’utiliser plusieurs process :

      Exemple trivial :

      find . -name '*.jpg' -print0 | xargs -0 -I '{}' --max-procs 0 echo "fichier {}"

      ou la version avec find tout seul (mais séquentielle) :

      find . -name '*.jpg' -exec echo fichier {} \;

      • [^] # Re: GNU parallel

        Posté par  . Évalué à 4.

        La commande parallel a aussi une option -0/--null (mais par défaut, c'est les retours à la ligne, pas les espaces)

    • [^] # Re: GNU parallel

      Posté par  . Évalué à 1.

      Merci, mais j'utilise cette commande via Termux directement dans mon ordiphone.

      arnauld

  • # Un script maison que j'utilise (avec python)

    Posté par  (Mastodon) . Évalué à 2.

    Salut,

    J'ai fait ce script pour redimentionner automatiquement des images - il s'agit de portraits à insérer dans un annuaire, mais c'est adaptable, hein !

    https://gitlab.com/frague59/resize

    Il utilise opencv pour localiser les visages, il est parallélisé…

    Courage !

    • [^] # Re: Un script maison que j'utilise (avec python)

      Posté par  . Évalué à 1.

      Merci, je vais essayer! Sur mon pc car l'aide pour la commande concernait essentiellement les photos (mauvaises) prises avec mon smartphone. Je le fais directement dans mon ordiphone avec Termux.

      Pour mes autres photos sur mon PC j'utilise imgp https://github.com/jarun/imgp qui me plait bien mais je vais essayer ton script car la fonction pour localiser les visages m'intéresse bien et je crois qu'imgp n'a pas cette possibilité…

      arnauld

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.