[traçabilité] [journal d'améliorations] [calque de réglage]

Gimp est le fabuleux logiciel open source de dessin 2D de qualité professionnelle.
Marat
Messages : 1
Inscription : 14 août 2018, 10:11

[traçabilité] [journal d'améliorations] [calque de réglage]

Message par Marat »

Bonjour à tous,

Je me permets de solliciter vos connaissances pour une question à laquelle je n'ai pas trouvé de réponse actuellement :

J'utilise Gimp (2.10) dans un cadre professionnel, et j'aurais besoin de tracer, d'une manière ou d'une autre, l'ensemble des améliorations/modifications que j'applique à une image de base.

L'ensemble des outils et commandes que l'on est autorisés à utiliser est assez encadré et se limite essentiellement à :
- Désaturer (systématiquement)
- Inverser les couleurs (optionnel)
- Ajuster les niveaux de couleur (optionnel)
- Ajuster la luminosité et le contraste (optionnel)

Actuellement, on effectue cette traçabilité à travers un formulaire à part (format .odt ou .calc) où on mentionne les outils utilisés et les valeurs de réglage le cas échéant (ex pour les niveaux on indique "Niveaux : 75-1,18-224") mais ça peut s'avérer assez lourd quand on a plusieurs dizaines d'images à traiter et/ou quand on travaille sur des zones de sélection assez précises et difficiles à décrire simplement dans notre formulaire.

Ma question est donc : avez vous connaissance de module/script/méthode qui permettrait d'enregistrer au fur et à mesure des modifications appliquées à l'image (précise jusqu'aux niveau de réglage de chaque outil) ou qui permettrait, comme pour les calques de réglages sous photoshop, de "revenir" sur un outil et ses réglages après application de ceux-ci ?

Un grand merci d'avance pour vos réponses ! :)
Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

[traçabilité] Décrire une sélection : persistance canal

Message par Gimphried »

Bonjour,

1. [traçabilité] Décrire une sélection
Marat a écrit :quand on travaille sur des zones de sélection assez précises et difficiles à décrire simplement dans notre formulaire.
Une sélection peut être nommée et sauvegardée dans le projet .xcf :

Décrire une sélection, c'est la nommer et pouvoir la réutiliser.

1.1 Persistance canal d'une sélection entre sessions

Par session, il faut entendre le moment entre le lancement de Gimp et celui de sa fermeture.

Gimp est ouvert sur une image de test comme la capture d'écran d'une fenêtre :
Sélectionner une fenêtre. Capturer son image au clavier par Alt+Imp Ecran puis coller Ctrl+V dans Gimp.
  1. Gimp barre d'outils > "Outils de sélection à main levée"
    => faisons une sélection au lasso en forme de patatoïde.
  2. Gimp menu "Sélection" > "Éditeur de sélection"
  3. Dans la barre d'outils du bas de la fenêtre "Sélection",
    clic "Enregistrer la sélection dans un canal"
  4. Dans la fenêtre de droite des Calques,
    clic onglet 2 "Canaux"
  5. Clic (avec le btn) droit (de la souris) sur le nouveau canal "Copie de Masque de sélection" >
    menu contextuel "Modifier les attributs du canal..."
  6. Dans la dlbox "Attributs du canal",
    renommer "Copie de Masque de sélection" en "2020-06-10_19-22_001_ChannelSel"
  7. Clic btn "Valider"
  8. Gimp menu "Sélection" > "Aucune"
    => Annule la sélection courante.
  9. Gimp menu "Fichier" > "Enregistrer" > test.xcf
  10. Gimp menu "Fichier" > "Quitter"
Relancer Gimp :
  1. Gimp menu "Fichier" > "Récemment ouverts" > test.xcf
  2. Dans la fenêtre de droite des Calques, Canaux et Chemins,
    clic onglet 2 "Canaux" si ce n'est pas déjà mémorisé.
  3. Clic droit "2020-06-10_19-22_001_ChannelSel" >
    menu contextuel "Canal vers sélection"
    => la sélection nommée a été reproduite entre deux sessions.
Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

[traçabilité] Décrire une sélection : persistance chemin

Message par Gimphried »

1.2 Quand la sélection fait son chemin entre deux sessions

Si au lieu d'un canal, vous préférez un chemin :
  1. Dans la barre d'outils du bas de la fenêtre "Sélection",
    clic "Sélection vers chemin"
  2. Clic 3e onglet de la fenêtre de droite des Calques, Canaux et Chemin.
  3. Click droit le nouveau chemin "Sélection" >
    menu contextuel "Modifier les attributs du chemin"
  4. Dans la dlgbox "Attributs du chemin",
    renommer le nom du chemin "Sélection" en "2020-06-10_19-22_001_PathSel"
  5. Gimp menu "Sélection" > "Aucune"
  6. Gimp menu "Fichier" > "Enregistrer" > test.xcf
  7. Gimp menu "Fichier" > "Quitter"
Relancer Gimp :
  1. Gimp menu "Fichier" > "Récemment ouverts" > test.xcf
  2. Dans la fenêtre de droite des Calques, Canaux et Chemin,
    clic onglet 3 "Chemins" si ce n'est pas déjà fait
  3. Clic droit "2020-06-10_19-22_001_PathSel" >
    menu contextuel "Chemin vers sélection"
    => la sélection nommée a été reproduite entre deux sessions.
  4. Gimp menu "Fichier" > "Quitter" sans enregistrer
Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

[traçabilité] Décrire une sélection : dans la console Script

Message par Gimphried »

1.3 Invoquer par script la sélection sauvegardée dans un canal nommé

Pour aller plus loin : faisons faire la même sélection en appuyant sur "Entrée" au clavier.

Pour se rappeler le mode d'emploi de la console Script-Fu dans Gimp, consulter l'usage du projet GenCards.
  1. Gimp menu "Fichier" > "Récemment ouverts" > test.xcf
  2. Gimp menu "Filtres" > "Script-Fu" > "Console"
    => réorganiser les fenêtres pour que l'éditeur principal et la console Script-Fu ne se chevauchent pas.
  3. La fonction "car" renvoie le premier élément d'une liste

    Code : Tout sélectionner

    (car '([traçabilité] [journal d'améliorations] [calque de réglage] ))
    [traçabilité] :shock:
  4. Quand au reste de notre liste ToDo, la fonction "cdr" s'en charge :

    Code : Tout sélectionner

    (cdr '([traçabilité] [journal d'améliorations] [calque de réglage] ))
    ([journal d'améliorations] [calque de réglage]) 8)
  5. Code : Tout sélectionner

    (car (gimp-image-get-channel-by-name (car (gimp-image-list)) "2020-06-10_19-22_001_ChannelSel"))
    4

    Le canal "2020-06-10_19-22_001_ChannelSel" a pour ID 4.
    Ce nombre peut changer selon les opérations déjà faites dans Gimp.
    C'est pour cela qu'il est mentionné "Relancer Gimp" pour remettre les ID à zéro. :lol:
  6. Retrouvons le nom du premier canal de l'image test.xcf :

    Code : Tout sélectionner

    (car (gimp-item-get-name (car (vector->list (cadr (gimp-image-get-channels (car (gimp-image-list))))))))
    "2020-06-10_19-22_001_ChannelSel"
    Huit parenthèses à fermer, cela commence à faire beaucoup.
  7. Le script interprète "Canal vers sélection" à sa manière en sélectionnant à nouveau l'image au lasso.

    Code : Tout sélectionner

    (let*   (   (image          (car (gimp-image-list)))
                (channelName    "2020-06-10_19-22_001_ChannelSel")
                (channelID      (car (gimp-image-get-channel-by-name image channelName)))
            ) ; end local variables
        (gimp-image-select-item image 0 channelID) ; apply programmatically the selection saved as channel
    )
    
    (#t)
    Le script rejoue la sélection au lasso au pixel près. :mrgreen:
Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

[traçabilité] [calque de réglage] : Historique d'annulation

Message par Gimphried »

2. Historique d'annulation
Marat a écrit :"revenir" sur un outil et ses réglages après application de ceux-ci ?
Il est possible de revenir à un état antérieur de l'image tant que Gimp est ouvert sur l'image modifiée.

Comme tous les logiciels d'édition, Gimp 2.10.20 :idea: dispose des fonctions Undo/Redo :
  • Gimp menu "Édition" > "Annuler" Ctrl+Z
  • Gimp menu "Édition" > "Rétablir" Ctrl+Y
Ce qui est moins courant est la visualisation de la pile des actions de l'utilisateur :

Nous allons paramétrer la taille de l'icône de vos images qui apparaîtra dans l'historique d'annulation :
  1. Fermer Gimp s'il est ouvert.
  2. NotePad++ "Fichier" > "Ouvrir" C:\Users\YourUserName\AppData\Roaming\GIMP\2.10\gimprc
    en remplaçant "YourUserName" par votre nom d'utilisateur Windows.
  3. Rechercher la ligne "(undo-preview-size ...)".
    Si elle n'existe pas, copier-coller la ligne suivante avant la fin de fichier "# end of gimprc"

    Code : Tout sélectionner

    (undo-preview-size gigantic)
    
    La parenthèse ouvrante débute une expression TinyScheme, le dialecte Lisp du langage de script Gimp Script-Fu.
    Vérifier que toute expression TinyScheme a autant de parenthèse(s) fermante(s) qu'il y a de parenthèse(s) ouverte(s).

    Les valeurs possibles du paramètre de undo-preview-size sont :
    "tiny" 14 x 14 pixels est illisible, "extra-small", "small", "medium", "large" 50 x 50, "extra-large", "huge", "enormous" 130 x 130, "gigantic" 194 x 194.
    Les guillemets ou double quotes permettent de délimiter la zone à copier-coller dans l'expression TinyScheme mais ne sont pas à sélectionner.
  4. NotePad++ "Fichier" > "Enregistrer"
  5. Gimp menu "Fichier" > "Ouvrir" une copie d'une de vos images à traiter.
  6. Gimp menu "Édition" > "Historique d'annulation"
    La fenêtre "Annuler" s'ouvre avec comme icône de votre image un carré de 194 x 194 pixels intitulé "[ image de base ]".
  7. Pour surveiller l'évolution de la fenêtre d'historique au fur et à mesure de vos modifications de l'image,
    => mettre côte à cote la fenêtre principale de l'éditeur Gimp et la fenêtre d'historique d'annulation sans chevauchement.
    Si possible utiliser toute la hauteur de votre moniteur pour la fenêtre d'historique d'annulation.
    Une configuration à deux écrans peut s'avérer nécessaire selon la largeur de l'image à traiter.
Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

[traçabilité] Enregistrer l'historique d'annulation

Message par Gimphried »

2.1 [traçabilité] Sauvegarder l'historique d'annulation

Le format natif de Gimp .xcf n'embarque pas l'historique d'annulation.
L'historique d'annulation est perdu à la fermeture de l'image et donc de Gimp.
Cependant, rien n'empêche d'enregistrer le contenu de la fenêtre "Historique d'annulation" par ses propres moyens :
  1. Gimp menu "Créer" > "Capture d'écran..." >
  2. Dans la dlbgox "Capture d'écran", garder les options par défaut :
    [x] Prendre une capture d'écran d'une fenêtre unique
  3. Dans la dlbgox "Select Window", glisser-déposer le pointeur en forme de "+" sur la cible :
    fenêtre "Annuler" ayant l'onglet "Historique d'annulation"
Tout est une question de volume. Capturer un écran entier de 1600 x 900 pixels prendra 210 Ko en jpeg.
Il faudra également scroller verticalement l'historique d'annulation.

Alternativement, Windows 10 dispose en standard d'un enregistreur de ce qui bouge à l'écran.
L'enregistreur dans la XBox game bar est connu des gamers qui souhaitent immortaliser leurs exploits dans leurs jeux préférés.
  1. Clic bouton démarrer de Windows > scroller verticalement jusqu'aux dernières applications commençant par "X"
    ou saisir "XBox" dans la zone "Taper ici pour rechercher" en bas de l'écran.
  2. Clic "XBox game bar" > "Capturer" entre "Audio" et "Performances"
    La fenêtre "Capturer", éventuellement déjà présente en haut à gauche, propose une capture d'écran et un enregistreur sous forme de film.

    Si nécessaire, [x] Activer l'enregistrement en arrière-plan.
    A vous à scroller l'ascenseur vertical de la fenêtre d'historique d'annulation pendant l'enregistrement du film.
Reste à associer les captures d'écran de l'historique d'annulation ou du film à des sauvegardes régulières de l'état courant de l'image traitée.
Il faudra mettre au point un système de nommage avec date au format US comme pour les canaux de sélection.

Cependant prévoir de la place sur le disque dur pour se permettre de sauver les .xcf régulièrement par :
Gimp menu "Fichier" > "Enregistrer une copie..."
Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

[traçabilité] Scripter la capture de l'historique "Annuler"

Message par Gimphried »

2.2 [traçabilité] Automatiser la sauvegarde de l'historique d'annulation avec SpyUndoHist

Gimp menu "Filtres" > "Script-Fu" > "Console"

Code : Tout sélectionner

(gimp-version)
:arrow: ("2.10.20")

Finalement, (undo-preview-size huge) dans gimprc permet d'avoir quatre vignettes 98 x 98 pixels dans l'historique "Annuler" docké avec "Calques", "Canaux" et "Chemins" dans la fenêtre de droite au-dessus de "Brosses", "Motifs", "Dégradés".

Définissons la fonction qui capture l'écran en TinyScheme Script-Fu :

Code : Tout sélectionner

(define (SpyUndoHist)
    
    (let*   (   (SHOOT-ROOT 1)
                (image  (car (plug-in-screenshot RUN-NONINTERACTIVE SHOOT-ROOT 0 0 0 0 0)))
                (layer  (car (gimp-image-get-active-layer image)))
                (filOut "C:/Tool/Gimp/forum/Linuxgraphic/dam/2020-06-12_20-21_UndoHisto.webp")
                (offx 1320) (height 500) ; in 1600 x 900 screen
                (width  (-(car (gimp-drawable-width layer)) offx 10))
            ) ; end local variables
        (gimp-image-undo-disable image) ; don't record in Undo Histo
        (gimp-image-crop image width height offx 0)
        (gimp-layer-resize-to-image-size layer)
        (gimp-image-clean-all image)
        (file-webp-save RUN-NONINTERACTIVE image layer filOut filOut 1 0 80 0 0 0 0 0 0 0 0 0 0)
        (gimp-image-undo-enable image) ; Enable recording again in Undo Histo
    )
)
SpyUndoHist

S'arranger pour que la fenêtre d'historique d'annulation soit entièrement visible.

L'espion prend une photo de l'écran entier mieux que la touche Impr Ecran de Windows puisque la capture d'écran est automatiquement sauvée dans une image traitée par Gimp.

Code : Tout sélectionner

(SpyUndoHist)
(1)
La barre de status de Gimp affiche en vert : Exportation de "C:/Tool/Gimp/forum/Linuxgraphic/dam/2020-06-12_20-21_UndoHisto.webp"

Naviguer avec l'explorateur de fichiers de Windows 10 jusqu'à :
2020-06-12_20-21_UndoHisto.webp 6 Ko :shock: seulement en 270 x 500 !

Cette capture d'écran au format Google WebP se visualise directement dans Gimp et les navigateurs Chrome, Edge Chromium, Edge Legacy, FireFox et Opera. Dans Safari, il faut le greffon Weppy.

Conclusion : vous pouvez capturer votre historique d'annulation en 6 Ko au format WebP.
Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

[traçabilité] Explications sur SpyUndoHist

Message par Gimphried »

2.3 [traçabilité] Commentaires sur SpyUndoHist en TinyScheme

"Calques", "Canaux", "Chemins", "Annuler" docké dans la fenêtre de droite a un magnétisme de 10 pixels avec le bord droit.
D'où, pour le calcul de la largeur de la fenêtre dockée, non seulement la soustraction avec l'offset offx mais aussi avec 10.

La soustraction TinyScheme a basiquement deux paramètres numériques en notation préfixée par l'opérateur :

Code : Tout sélectionner

(- *pi* 3) ; pi - 3
0,1415926536.0

Mais aussi avec autant de nombres que l'on veut dans la liste suivante :

Code : Tout sélectionner

(- 5 3 2) ; 5 - 3 - 2
0

Le greffon plug-in-screenshot fait la capture de l'écran complet.
Ensuite l'outil de découpe de Gimp ne conserve que l'historique d'annulation grâce à des constantes géographiques en dur à ajuster manuellement car elles dépendent de la résolution de votre écran.

C:\Users\YourUserName\AppData\Roaming\GIMP\2.10\sessionrc contient bien le positionnement exact des fenêtres :

Code : Tout sélectionner

(session-info "toplevel"
    (factory-entry "gimp-dock-window")
    (position 1313 0)
    (size 271 827)
    ...
    (gimp-dock
        (book
            (dockable "gimp-undo-history"
mais un code générique TinyScheme dans SpyUndoHist serait trop long dans le cadre de ce thread pour un intérêt limité : il suffit de garder votre historique d'annulation à la même place, choisie par vous.

Le couple de fonctions disable/enable cache à l'enregistreur de l'historique d'annulation certaines opérations internes de SpyUndoHist.

Code : Tout sélectionner

(gimp-image-undo-disable image) ; don't record in Undo Histo
...
(gimp-image-undo-enable image) ; Enable recording again in Undo Histo
Comparer dans la PDB avec le couple freeze/thaw = melt = fondre réservé pour encadrer des actions qui ne modifient pas l'image :

Code : Tout sélectionner

(gimp-image-undo-freeze image)
...
(gimp-image-undo-thaw image)
Finalement certains greffons regroupent toutes leurs actions en une seule :

Code : Tout sélectionner

(gimp-image-undo-group-start image)
...
(gimp-image-undo-group-end image)
Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

[traçabilité] Enregistreur de macro dans Gimp ? Jeu de test

Message par Gimphried »

3. [traçabilité] Vers un enregistreur de macros dans Gimp

Avant de se projeter dans le futur sur la faisabilité d'un enregistreur de macros dans Gimp 3.x,
préparer dans Gimp 2.10.20 plus prosaïquement l'image minimale de référence.

C'est un carré de 200 x 200 pixels couleur bleue RGB "0f12aa" avec l'"outil pipette à couleurs".
=> C:\Tool\Gimp\forum\Linuxgraphic\dam\test.xcf 2 Ko

Au niveau de la disposition des fenêtres, placer l'éditeur principal de Gimp sous le bord supérieur de l'écran avec une hauteur réduite ne permettant d'éditer qu'une image de 200 x 200.

Cela laisse toute la place à la console Script-Fu déplacée sous l'éditeur.
Classiquement à gauche se trouve la boîte d'outils.
A droite parmi "Calques", "Canaux", "Chemins", "Annuler" ancrés, c'est l'historique d'annulation "Annuler" qui est directement visible sans chevauchement.

Le contexte à reproduire systématiquement dans ce tutoriel est donc :
  1. Fermer Gimp
  2. Redémarrer Gimp
  3. Gimp menu "Fichier" > "Récemment ouverts" > test.xcf
  4. Gimp menu "Filtres" > "Script-Fu" > "Console"
Dernière modification par Gimphried le 13 juin 2020, 23:50, modifié 1 fois.
Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

[traçabilité] Protocole de test de la session 01

Message par Gimphried »

3.1 [traçabilité] GUI : mode opératoire de la session de test

Dans le GUI (Graphical User Interface) de Gimp :
Marat a écrit :- Désaturer (systématiquement)
- Inverser les couleurs (optionnel)
- Ajuster les niveaux de couleur (optionnel)
- Ajuster la luminosité et le contraste (optionnel)
Plutôt que la fréquence, c'est surtout un mode opératoire précis qui importe le plus pour lever toute potentielle ambiguïté et analyser la faisabilité.

Pour revenir à l'état zéro originel de Gimp, nous allons supprimer la trace des précédentes sessions de façon ciblée et limitée.

A vous à organiser la cible de la sauvegarde du contexte pour y revenir si vous considérez que c'est absolument nécessaire.

Ainsi quand un chemin est mentionné comprenant les dossiers "session00" puis "session01", il est supposé que vous créez les dossiers correspondant où vous voulez en adaptant le chemin.

L'état zéro d'origine de Gimp nécessite une opération complémentaire de gestion de fichiers de log sans danger car vous allez les sauvegarder.
Ces fichiers de log sont générés automatiquement par Gimp à chaque session.

:arrow: Le résultat escompté est d'éviter d'avoir à gérer la concaténation des contextes des sessions précédentes avec notre session01 clef.

Fermer Gimp :!:

Dans le gestionnaire de fichiers de Windows :
  1. déplacer
    C:\Users\YourUserName\AppData\Roaming\GIMP\2.10\action-history
    dans
    C:\Tool\Gimp\forum\Linuxgraphic\dam\session00\
    => action-history n'existe plus dans "2.10"
  2. déplacer
    C:\Users\YourUserName\AppData\Roaming\GIMP\2.10\filters\*.settings
    dans
    C:\Tool\Gimp\forum\Linuxgraphic\dam\session00\filters
    => Le dossier "filters" de roaming existe toujours mais vidé.
Le dossier "session00" est votre backup. Il ne sera plus utilisé par la suite dans ce tutoriel.

La seule façon de savoir si vous suivez le tutoriel est de s'assurer que vous obtenez le même code RGB de chaque étape.

Rouvrir Gimp sur l'image du carré bleu RGB "0f12aa" de test.xcf selon le protocole indiqué au chapitre 3 impliquant le démarrage de la console Script-Fu.
  1. Gimp menu "Couleurs" > "Teinte-Saturation..." > "Saturation"
    Clic flèche vers le bas pour décrémenter jusqu'à -40,0.
    Ne bouger pas le curseur sinon il est difficile d'avoir la valeur entière ciblée.
    Clic btn "Valider"
    => le carré bleu devient plus foncé RGB "2e308b"
  2. Gimp menu "Couleurs" > "Inverser"
    => Le carré bleu devient jaune pâle RGB "d1cf74"
  3. Gimp menu "Couleurs" > "Niveaux..."
    "Niveaux d'entrée" :
    • "Canal" : "Rouge". "Limiter l'entrée" : 5,00
      => curseur vers la gauche à affiner pour la valeur entière.
    • "Canal" : "Vert". "Limiter l'entrée" : 1,00 inchangé
    • "Canal" : "Bleu". "Limiter l'entrée" : 0,50
      => curseur vers la droite à affiner pour la valeur 1/2 très précise.
    clic btn "Valider"
    => le jaune devient jaune d’œuf plus vif RGB "f5cf35"
  4. Gimp menu "Couleurs" > "Luminosité-Contraste..."
    • "Luminosité" : 31 vers la droite. Max: +127
    • "Contraste" : -31 vers la gauche. Min: -127
      clic btn "Valider"
      => le jaune tire vers le marron RGB "d0b95e"
  5. Gimp menu "Fichier" > "Quitter" > clic btn "Abandonner les modifications"
    => test.xcf initial doit toujours rester inchangé.
La fin de session est identique à son début sauf que la cible du backup est le nouveau dossier cible "session01".

Rappel : Gimp doit être fermé quand vous manipulez les fichiers log :!:

Dans le gestionnaire de fichiers de Windows :
  1. déplacer
    C:\Users\YourUserName\AppData\Roaming\GIMP\2.10\action-history
    dans
    C:\Tool\Gimp\forum\Linuxgraphic\dam\session01\
  2. déplacer
    C:\Users\YourUserName\AppData\Roaming\GIMP\2.10\filters\*.settings
    dans
    C:\Tool\Gimp\forum\Linuxgraphic\dam\session01\
Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

[traçabilité] Gimp action-history

Message par Gimphried »

3.2 [traçabilité] Analyse de la trace action-history

La session01 contient la trace de log action-history.
Ce journal n'est créé qu'à la fermeture de Gimp.

Code : Tout sélectionner

# GIMP action-history

(history-item "file-open-recent-05" 0)
(history-item "filters-hue-saturation" 0)
(history-item "filters-invert-perceptual" 0)
(history-item "filters-levels" 0)
(history-item "filters-brightness-contrast" 0)
(history-item "plug-in-script-fu-console" 1)

# end of action-history
Le moment d'ouverture de la console Script-Fu importe peu.

Le mode opératoire a été conçu pour que l'ordre séquentiel soit exceptionnellement respecté.
Ce n'est pas toujours le cas si vous réutilisez le même filtre dans la même session.
Il n'y a pas d'horodatage.
Cependant action-history donne un premier niveau d'informations sur le nom de chaque action réellement réalisée.
Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

[traçabilité] Gimp filtre désaturation

Message par Gimphried »

3.3 [traçabilité] Analyse de la trace des filtres utilisés

La session01 contient les traces filters\*.settings :

Dans une session Windows PowerShell :

Code : Tout sélectionner

PS C:\Tool\Gimp\forum\Linuxgraphic\dam\session01> 
dir filters\*.settings| Sort-Object LastWriteTime | ft LastWriteTime,Length,Name

LastWriteTime       Length Name                                 
-------------       ------ ----                                 
13/06/2020 18:48:52    602 GimpHueSaturationConfig.settings     
13/06/2020 18:50:27    719 GimpLevelsConfig.settings            
13/06/2020 18:54:37    179 GimpBrightnessContrastConfig.settings
3.3.1 [traçabilité] Analyse de la trace du filtre désaturation

Hue = teinte n'est pas utilisée.

A la question pourquoi le menu "Couleurs" > "Teinte-Saturation..." et non pas le menu simplifié "Couleurs" > "Saturation..." pourtant GEGL (GenEric Graphic Library) ?

En l'état actuel de la 2.10.20, tout n'est pas forcément scriptable.

Revenons à Hue-Saturation sans Hue :

Étape 1: GimpHueSaturationConfig.settings

Code : Tout sélectionner

# settings

(GimpHueSaturationConfig "2020-06-13 18:48:52"
    (time 1592066932)
    (range all)
    (hue 0)
    (saturation -0.40000000000000008)
    (lightness 0)
    (range red)
    (hue 0)
    (saturation 0)
    (lightness 0)
    (range yellow)
    (hue 0)
    (saturation 0)
    (lightness 0)
    (range green)
    (hue 0)
    (saturation 0)
    (lightness 0)
    (range cyan)
    (hue 0)
    (saturation 0)
    (lightness 0)
    (range blue)
    (hue 0)
    (saturation 0)
    (lightness 0)
    (range magenta)
    (hue 0)
    (saturation 0)
    (lightness 0)
    (overlap 0))

# end of settings
=> OK pour "Saturation..." -0.40

Fermer Gimp et relancer le ouvert sur test.xcf de référence :

Code : Tout sélectionner

(let*   (   (image (car (gimp-image-list)))
            (layer (car (gimp-image-get-active-layer image)))
        ) ; end local variables
    (gimp-drawable-hue-saturation layer 0 0 0 -40 0) ; -100..+100
)
=> le carré bleu devient plus foncé.
Vérifier la Notation HTML RGB "2e308b" avec l'"outil pipette à couleurs".
Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

[traçabilité] Gimp filtre inversion

Message par Gimphried »

3.3.2 [traçabilité] Analyse de la trace du filtre inversion

Étape 2: "Couleurs" > "Inverser" n'est pas un filtre GEGL.
Il n'y a pas de trace associée dans filters\*.settings :roll:

action-history indique "filters-invert-perceptual" inconnue de la PDB.
Dans ce cas, la recherche dans la PDB se fait par mot clef sans les "-" séparateurs. :idea:
"perceptual" ne donnant aucun résultat, tenter le mot clef "invert" :
  • "(gimp-drawable-invert drawable linear)" ; Gimp menu "Couleurs" > "Inversion linéaire"
  • "(gimp-invert drawable)" ; deprecated
Relancer Gimp dans le contexte après la désaturation de l'étape 1 :

=> Testons la version dépréciée dans la console Script-Fu.
  • la fonction n'a qu'un seul paramètre plus aisé à mettre en œuvre
  • le protocole de test n'utilise pas le menu d'inversion linéaire

Code : Tout sélectionner

(let*   (   (image (car (gimp-image-list)))
            (layer (car (gimp-image-get-active-layer image)))
        ) ; end local variables
    (gimp-invert layer)
)
=> Le carré bleu devient jaune pâle RGB "d1cf74"

L'enquête est bouclée :
Gimp menu "Couleurs" > "Inverser" est bien "(gimp-invert layer)".
Dernière modification par Gimphried le 14 juin 2020, 00:35, modifié 1 fois.
Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

[traçabilité] Gimp filtre niveaux

Message par Gimphried »

3.3.3 [traçabilité] Analyse de la trace du filtre niveaux

Étape 3: GimpLevelsConfig.settings

Code : Tout sélectionner

# settings

(GimpLevelsConfig "2020-06-13 18:50:27"
    (time 1592067027)
    (linear no)
    (clamp-input no)
    (clamp-output no)
    (channel value)
    (low-input 0)
    (high-input 1)
    (gamma 1)
    (low-output 0)
    (high-output 1)
    (channel red)
    (low-input 0)
    (high-input 1)
    (gamma 5.0000000000000018)
    (low-output 0)
    (high-output 1)
    (channel green)
    (low-input 0)
    (high-input 1)
    (gamma 1)
    (low-output 0)
    (high-output 1)
    (channel blue)
    (low-input 0)
    (high-input 1)
    (gamma 0.5)
    (low-output 0)
    (high-output 1)
    (channel alpha)
    (low-input 0)
    (high-input 1)
    (gamma 1)
    (low-output 0)
    (high-output 1))

# end of settings
=> OK RGB gamma.

Après recherche dans la PDB, un compilateur humain traduirait en script-fu :

Code : Tout sélectionner

(let*   (   (image (car (gimp-image-list)))
            (layer (car (gimp-image-get-active-layer image))) ; drawable
        ) ; end local variables
    ; drawable channel low/high-input clamp-input gamma low/high-output clamp-output)
    (gimp-drawable-levels layer 1 0 1 0 5   0 1 0) ; channel red
    (gimp-drawable-levels layer 2 0 1 0 1   0 1 0) ; channel green
    (gimp-drawable-levels layer 3 0 1 0 0.5 0 1 0) ; channel blue
    ;                             l/h   ^gamma  ^clamp-output no
)
=> le jaune devient jaune d’œuf plus vif RGB "f5cf35"
Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

[traçabilité] Gimp filtre luminosité contraste

Message par Gimphried »

3.3.4 [traçabilité] Analyse de la trace du filtre luminosité contraste

Dernière étape 4: GimpBrightnessContrastConfig.settings

Code : Tout sélectionner

# settings

(GimpBrightnessContrastConfig "2020-06-13 18:54:37"
    (time 1592067277)
    (brightness 0.24409448818897639)
    (contrast -0.24409448818897639))

# end of settings
=> facteur d'échelle à calculer :
  • (brightness 0.244...) ; pour "Luminosité" : +31 max : +127
  • (contrast -0.244...) ; pour "Contraste" : -31 min : -127
La recherche dans la PDB propose à la sagacité du lecteur le dilemme :
  • (gimp-brightness-contrast drawable brightness contrast) ; Deprecated -127..+127
    => correspond à l'intervalle lors de la saisie dans le GUI
  • (gimp-drawable-brightness-contrast drawable brightness contrast) ; -0,5..+0,5
    => correspond à la traçabilité de GimpBrightnessContrastConfig.settings
Relancer Gimp et reproduire le contexte juste avant cette dernière étape 4.
Dans la console Script-Fu :

Code : Tout sélectionner

(let*   (   (image (car (gimp-image-list)))
            (layer (car (gimp-image-get-active-layer image)))
        ) ;            drawable brightness contrast
    (gimp-brightness-contrast layer 31 -31) ; Deprecated -127..+127
)
=> le jaune tire vers le marron RGB "d0b95e"

Gimp menu "Edition" > "Annuler Luminosité-Contraste"
Dans la console Script-Fu :

Code : Tout sélectionner

(let*   (   (image (car (gimp-image-list)))
            (layer (car (gimp-image-get-active-layer image)))
        ) ;            drawable brightness contrast
    (gimp-drawable-brightness-contrast layer 0.24409448818897639 -0.24409448818897639) ; -0,5..+0,5
)
=> le jaune tire vers le même jaune marron RGB "d0b95e"

La difficulté est que la saisie legacy dans l'intervalle -127..+127 est potentiellement non représentable dans le nouvel intervalle réduit -0,5..+0,5 pour les bornes -127 donnant -1 et +127 donnant +1.

Code : Tout sélectionner

(/ 31 127)
0,2440944882.0

Que faire avec la nouvelle API si l'utilisateur a entré "+127" au curseur :

Code : Tout sélectionner

(let*   (   (image (car (gimp-image-list)))
            (layer (car (gimp-image-get-active-layer image)))
        ) ;            drawable brightness contrast
    (gimp-drawable-brightness-contrast layer 1 (/ -31 127)) ; -0,5..+0,5
)
Error: Procedure execution of gimp-drawable-brightness-contrast failed on invalid input arguments:
La procédure « gimp-drawable-brightness-contrast » a été appelée avec la valeur « 1,000000 » pour le paramètre « brightness » (n°2, type gdouble).
Cette valeur est hors limite.

Cela sonne fortement comme une incompatibilité freinant l'adoption enthousiaste des dernières versions stabilisées ?

A moins que les intervalles -127..-64 et +64..+127 n'ont jamais été significatifs.

La plupart du temps, une erreur générique sur les paramètres d'entrée est inexploitable pour résoudre rapidement le problème.
Ce retour d'erreur est exceptionnellement explicité et traduit, ce qui est doublement extrêmement rare et mérite d'être souligné.
Répondre