Journal GTK Batch Resizer

Posté par  (site web personnel) .
Étiquettes : aucune
1
27
août
2006
Cher journal,

J'avais cherché un petit soft gtk qui puisse remettre à l'endroit mes images à la sortie de mon appareil photo numérique, les renommer et les redimentionner. Il y en avait plein en ligne de commande, ou dont les fonctionnalités étaient incluses dans des softs de galeries, mais jamais de petit soft léger et pratique qui ne fasse que l'essentiel, mais bien et rapidement.

J'ai donc décidé de me mettre à la tâche, et quelques jours plus tard, voici ce qui en sort :
http://w3.nonsenz.org/gtk-batch-resizer/

Si vous vous sentez l'envie de l'essayer, n'hésitez pas car je n'ai pas beaucoup d'utilisateurs/testeurs.
  • # redimensionner

    Posté par  (site web personnel) . Évalué à 2.

    redimensionner avec un s, pas un t (dans l'interface graphique et sur ton site)

    sinon ça fait bizarre d'avoir une interface graphique contenant le mot "batch" mais bon ça change des pyphotoresize ;-)

    j'espère que tu auras pas mal de testeurs, perso j'ai pas encore d'appareil photo numérique :/
    • [^] # Re: redimensionner

      Posté par  (site web personnel) . Évalué à 2.

      Merci pour la correction de la faute d'orthographe (hummm ;-))
      Sinon pour le choix du nom, je faisais référence au batch processing, traitement par lots, mais c'est vrai que ça rappelle un peu les scripts shell...
      • [^] # Re: redimensionner

        Posté par  . Évalué à 3.

        Deux critiques :

        1. dans la capture d'écran, pour redimmensionner, je peux choisir linéaire, cubique... Qu'est-ce donc ?

        2. J'ai regardé un peu les sources, et je te conseilles fortement de le commenter : dire à quoi sert une classe, ce que font les fonctions, ce que sont les arguments, ce que la fonction retourne.... bref, tout ce qui peut permettre de rentrer plus facilement dans le code.
        J'ai voulu faire quelques modifications dans le code de gnome-sudoku, et en même temps apprendre python. Le code est plus important que le tien, et il n'y a aucun commentaire. J'ai vite abandonné ! c'est dommage.

        Une question :

        1. Est-ce que ton programme peut-être appelé comme script nautilus ? du genre, je cliques droit sur un fichier ou un dossier, je choisis script puis ton script et ça me lance ton programme avec tout ce qui est possible de pré-configurer ?

        Voila, sinon c'est bien.
        • [^] # Re: redimensionner

          Posté par  (site web personnel) . Évalué à 2.

          Merci pour tes remarques :
          1- Les filtres de redimensionnement sont les mêmes que dans GIMP. Je ne suis pas spécialiste du traitement de l'image mais disons qu'il existe plusieurs algorithmes pour agrandir ou rétrécir la taille d'une image. La première méthode est plus rapide mais donne de moins bons résultats que la troisième (cubique) qui est plus lente mais donne une meilleure qualité. La seconde est entre les deux (sur les deux plans)

          2- Tu as tout à fait raison pour les commentaires, c'est insuffisant, je vais m'appliquer de ce côté

          3- Tu peux effectivement lancer le script depuis Nautilus. Par exemple en double-cliquant sur batch-resizer.py nautilus me demande si je souhaite afficher/lancer dans un terminal/lancer et je choisis "lancer".
          • [^] # Re: redimensionner

            Posté par  . Évalué à 2.

            1. Ne pourrais-tu pas mettre plutôt la qualité du résultat du genre

            ( ) qualité moyenne ( ) qualité normale ( ) haute qualité

            et en mettant un tooltip qui donne le nom de la méthode

            ( ) qualité moyenne ( ) qualité normale ...
            [ méthode linéaire, rapide]

            ?

            3. Il faut mettre le script dans ~/.gnome2/nautilus-scripts/ pour le voir apparaître dans le menu contextuel.
            Le site http://g-scripts.sourceforge.net/ est le site du projet. La page http://g-scripts.sourceforge.net/faq.php te donnera la liste des arguments qui seront donné lors de l'appel.
            • [^] # Re: redimensionner

              Posté par  (site web personnel) . Évalué à 1.

              Ok, je n'avais pas vraiment saisi ce que tu disais concernant le menu contextuel, et je ne connaissais pas g-scripts.
              Je regarderai tout ça pour une version 1.2.

              Merci encore pour tes remarques.
        • [^] # Re: redimensionner

          Posté par  . Évalué à 2.

          1. dans la capture d'écran, pour redimmensionner, je peux choisir linéaire, cubique... Qu'est-ce donc ?

          Lorsque tu redimensionnes, il y perte d'information. Quand on fait une redimension avec un multiple entier (2x moins, 4x moins), la vieille méthode brutor c'est de prendre un pixel sur deux sur une ligne sur deux, mais cela provoque un crénelage dégueulasse. L'idée est de prendre un algo d'anticrénelage. Sur le cas d'un redimensionnement avec les multiples entiers, on peux faire une moyenne entre les pixels gardés et enlevés contigus, comme cela on réintroduit une partie de l'information perdue. C'est un algo linaire et restrictif, et pas terros en terme de qualité.

          Pour généraliser, l'idée de faire une espèce de moyenne entre des pixels contigus, pour cela il y a plein d'algorithmes différents, avec comme critère principal le rapport qualité/vistesse d'exécution. Ces algorithmes sont souvent des algo d'interpolation, le cas général de la moyenne. L'interpolation linéaire est une moyenne toute bête (moyenne entre deux points => point médian qui passe par la droite entre les deux points), après on peut faire des interpolations ou on va prendre plus de deux points pour calculer notre moyenne. (carré => parabole passant entre trois point, on prend la valeur qui nous intéresse sur cette parabole, cubique => équation f(x) = ax³+bx²+cx+d avec quatre points pour la résoudre puis on prend le f(x) qui nous intéresse sur cette courbe)

          Plus on monte dans la complexité d'interpolation, plus la qualité est meilleure, mais la qualité finale augmente très peu par rapport a l'énorme quantité de calculs suplémantaire quand on passe de linéaire => carré, carré => cubique.
          En gros, en linéaire on fait le gros du boulot, après c'est toujours un peu meilleur mais bien plus cher en temps CPU.
          • [^] # Re: redimensionner

            Posté par  (site web personnel) . Évalué à 4.

            En gros, en linéaire on fait le gros du boulot, après c'est toujours un peu meilleur mais bien plus cher en temps CPU.

            Je ne suis pas trop d'accord, et ça dépend de l'image d'origine. En général le linéaire est bon lorsque les valeurs évoluent relativement continûment (dérivée seconde à valeurs faibles), par contre lors d'évolutions "saccadées", il donne un effet de flou. Ça dépend au final des tailles concernées, mais s'il y a des bords francs sur l'image d'origine c'est probable que le cubique conservera une bonne qualité de bord franc et non le linéaire.

            Au cours de mon travail sur un jeu qui va sortir en version 2 bientôt, j'ai utilisé plusieurs types d'algorithme de lissage au cours d'une rotation d'image, et le résultat illustre bien mon propos :

            http://zarb.org/~gc/t/fb2-rotate.png
            • [^] # Re: redimensionner

              Posté par  . Évalué à 2.

              Au cours de mon travail sur un jeu qui va sortir en version 2 bientôt
              Hmmm, ne serait-ce pas là une tentative à peine subtile de lancer le buzz ?...
        • [^] # Re: redimensionner

          Posté par  . Évalué à 2.

          Je suis entièrement d'accord pour le manque de commentaire.

          Je compte justement me mettre à la programmation en python, et plus particulièrement python / glade (j'aime bien cette approche de glade, ça me fait penser au xhtml / css) et c'est vrai que ce genre d'application permet d'avoir un exemple concret pas trop gros donc normalement plus simple à assimiler. En plus, c'est vrai que le Python, c'est agréable à lire (merci de laisser ce troll mourir de faim). Donc des commentaires en plus, ce serait génial.

          De plus, l'application en elle même est utile (d'ailleurs, je pense que c'est pour ça que tu l'as fait). Je vais donc tester ça quand j'aurais un peu de temps.

          En tout cas merci d'avoir fait ce journal et mis ton programme à disposition, je sais que quand on fait juste un petit programme dans son coin, on n'a pas tendance à le partager, alors qu'ils sont souvent utile et pour les apprentis programmeurs, un peu plus digeste que le code source d'openoffice (exagération volontaire).

          Voilà encore merci et bonne continuation.
  • # petite question...

    Posté par  . Évalué à 3.

    Lorsqu'il y a redimmensionnement et rotation, est-ce que la vignette présente dans les fichiers jpeg est mise à jour?
    • [^] # Re: petite question...

      Posté par  (site web personnel) . Évalué à 1.

      Dès qu'il y a un traitement sur l'image (autre que le changement de nom), les tags EXIF sont perdus. Je n'ai pas trouvé comment écrire de tags exifs avec la PIL (Python Imaging Library). J'arrive juste à les lire :-(

      Je vais quand même continuer à chercher.
      • [^] # Re: petite question...

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

        Autre question: est-ce que, en cas de simple rotation de 90 degrés, c'est sans perte sur les fichiers JPEG ? Il y a des algorithmes qui permettent de faire ce genre de rotations (très courantes sur les photos) sans devoir recompresser le fichier après, et donc reprovoquer une perte d'information.
  • # Ca existe déjà...

    Posté par  . Évalué à 2.

    Et ça s'appelle convert ( http://www.imagemagick.org/ )
    • [^] # Re: Ca existe déjà...

      Posté par  . Évalué à 1.

      Sinon en interface graphique il y a gthumb qui remet toutes les images à l'endroit, d'un click (il peut se servir des données EXIF fournies par l'appareil, pour peu que celui-ci détecte l'orientation au-moment de la photo), qui peut redimensionner le tout ou convertir le format.

      C'est facile: sélectionner les images et explorer le menu "outils".
      • [^] # Re: Ca existe déjà...

        Posté par  (site web personnel) . Évalué à 1.

        J'aime beaucoup gthumb, je l'utilise, mais il n'a pas les mêmes fonctionnalités. En particulier il ne permet pas à ma connaissance de renommer, redimensionner et faire les rotations en une seule opération...
        D'ailleurs le changement de nom (qui existe uniquement par la fonction de redimensionnement) ou de répertoire n'est pas satisfaisante à mon avis (ne permet pas de mettre un préfixe, un suffixe et d'incrémenter le nom de l'image...)
      • [^] # Re: Ca existe déjà...

        Posté par  (site web personnel) . Évalué à 4.

        gthumb est chiatique : quand il tourne les photos il conserve les infos EXIF sans les mettre à jour, donc l'information d'orientation est pétée.
    • [^] # Re: Ca existe déjà...

      Posté par  (site web personnel) . Évalué à 1.

      je n'ai pas trouvé d'interface gtk pour imagemagick... mais peut-être peux-tu l'indiquer ?

Suivre le flux des commentaires

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