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

Gimp est le fabuleux logiciel open source de dessin 2D de qualité professionnelle.
Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

[traçabilité] synthèse des logs des filtres Gimp

Message par Gimphried »

3.3.5 [traçabilité] Synthèse de l'analyse des traces des filtres
  1. Gimp menu "Fichier" > "Quitter" si ce n'est pas déjà fait.
  2. Effacer action-history et filters\*.settings dans l'espace utilisateur Roaming
  3. Relancer Gimp
  4. Gimp menu "Fichier" > "Récemment ouverts" > test.xcf
  5. Gimp menu "Filtres" > "Script-Fu" > "Console"
L'ensemble de la session01 est résumé en quelques lignes qui représenteraient l'objectif cible d'un futur enregistreur de macros dans Gimp :

Code : Tout sélectionner

(define (makrorder) ; reproduce the recorded steps 1 to 4
    (let*   (   (image (car (gimp-image-list)))
                (layer (car (gimp-image-get-active-layer image)))
            ) ; end local variables
        (gimp-image-undo-disable image) ; don't record in Undo Histo        
        (gimp-drawable-hue-saturation layer 0 0 0 -40 0)                 ; step 1
        (gimp-invert layer)                                              ; step 2
        (gimp-drawable-levels layer 1 0 1 0 5   0 1 0) ; channel red       step 3
        (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    
        (gimp-drawable-brightness-contrast layer (/ 31 127) (/ -31 127)) ; step 4
        (gimp-image-undo-enable image) ; Enable recording again in Undo Histo
    )
)
(makrorder)
=> du carré bleu RGB "0f12aa" directement au jaune marron RGB "d0b95e".

Le dossier filters est resté vide.
Le dernier action-history ne contient que :

Code : Tout sélectionner

# GIMP action-history

(history-item "file-open-recent-01" 0)
(history-item "plug-in-script-fu-console" 1)

# end of action-history
La phase de spécification est terminée :
  • en mode GUI, filters\*.settings assurent la traçabilité(*) des filtres GEGL ;
  • en mode script-Fu : la transformation du carré de test RGB "0f12aa" directement en RGB "d0b95e" est reproductible.
(*) Référence : "Making settings persistent in GIMP" par Alexandre Prokoudine, Gimp.org, 6 octobre 2016

Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

[journal d'améliorations] Vers une journalisation automatisé

Message par Gimphried »

4. [journal d'améliorations] journaliser le réglage des filtres utilisés

4.0 [journal d'améliorations] Avant-propos dans la console Script-Fu

Dans le journal des améliorations potentielles de la console Script-Fu,
on croît entendre, comme une ritournelle, une étrange fausse note sans bémol :

A propos, que vaut un commentaire TinyScheme dans la console Script-Fu ?
Syntaxiquement, un commentaire TinyScheme commence par point-virgule ";" jusqu'à la fin de ligne.

Code : Tout sélectionner

;# Remove empty lines and Python comments starting with sharp "#"
#<EOF>
End Of File : fin de fichier :shock:

Et un commentaire Python dans la console Script-Fu ?

Code : Tout sélectionner

# Remove empty lines and Python comments starting with sharp "#"
Error: undefined sharp expression

Qu'à cela ne tienne. Tentons le sous-marin requin :

Code : Tout sélectionner

(define # nil)
Error: undefined sharp expression
Le même message d'erreur revient comme un boomerang.

Pour conclure cet avant-propos plus positivement :

Code : Tout sélectionner

(atom? #\#)
#t
Le caractère '#' est heureusement un atome TinyScheme.
Dernière modification par Gimphried le 15 juin 2020, 00:46, modifié 1 fois.

Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

[traçabilité] Analyse syntaxique des paramétrages de Gimp

Message par Gimphried »

4.1 [traçabilité] Analyse syntaxique des logs de Gimp

L'analyse syntaxique consiste à convertir les logs de Gimp du format Unix LF au format Windows CR+LF en supprimant les lignes vides et les commentaires Python commençant par "#" jusqu'à la fin de ligne.

Clic droit btn "Démarrer" de Windows > "Windows PowerShell"
Alternativement lancer "Windows PowerShell ISE" pour l'aide intellisense.

Dans la console bleue foncée de Windows PowerShell ou PowerShell ISE (Integrated Script Development) :

Code : Tout sélectionner

PS C:\Users\YourUserName> # Go to the folder "session01"
cd C:\Tool\Gimp\forum\Linuxgraphic\dam\session01
Vous êtes dans le dossier "session01".

Copier-coller la définition de cette fonction PowerShell après l'invite PowerShell :

Code : Tout sélectionner

function ConvGimpSetting($filin, $isSetting)
{   # Remove empty lines and Python comments starting with sharp "#"
    if ($isSetting) {$filename = "$filin.settings"} else {$filename = $filin}
    $filOut = "$filin.scm"
    $lines = Get-Content $filename | where {$_.Length -gt 0 -and -not $_.StartsWith("#")}
    
    $nbrLine = $lines.Length # number of lines
    
    # First to last but one line with Cr+Lf newline
    $lines[0..($nbrLine-2)] | Out-File $filOut -Encoding ascii
    
    # Last line without newline to avoid #<EOF>
    $lines[-1] | Out-File -NoNewline -Append $filOut -Encoding ascii
}
Valider par la touche "Entrée".

Code : Tout sélectionner

ConvGimpSetting "action-history" $false
génère action-history.scm

Code : Tout sélectionner

cd filters
Get-ChildItem *.settings | ForEach-Object {ConvGimpSetting $_.BaseName $true}
génère *.scm

Code : Tout sélectionner

Get-Content GimpBrightnessContrastConfig.scm
génère :

Code : Tout sélectionner

(GimpBrightnessContrastConfig "2020-06-13 18:54:37"
    (time 1592067277)
    (brightness 0.24409448818897639)
    (contrast -0.24409448818897639))
Remontons dans le dossier "session01" :

Code : Tout sélectionner

cd ..
Get-ChildItem *.scm -recurse | format-table Name,LastWriteTime,Length
affiche :

Code : Tout sélectionner

Name                             LastWriteTime       Length
----                             -------------       ------
GimpBrightnessContrastConfig.scm 14/06/2020 20:44:17    150
GimpHueSaturationConfig.scm      14/06/2020 20:44:17    600
GimpLevelsConfig.scm             14/06/2020 20:44:17    721
action-history.scm               14/06/2020 20:43:39    256
DamReport.scm                    14/06/2020 20:32:00    682
Petite révolution tranquille : l'extension de fichiers .settings a été inopinément convertie en .scm, l'extension de fichier interprétable en TinyScheme dans la console Script-Fu de Gimp. :idea:

Vous avez le choix du langage pour une analyse syntaxique plus sophistiquée afin d'extraire les paramètres des filtres.
Nous sommes quand même en 2020 !
La plupart des utilisateurs de Gimp recommandent avec raison Python beaucoup plus moderne que le préhistorique TinyScheme vraiment Tiny de l'époque où vous n'étiez même pas né. :lol:

Cependant ce n'est pas renommer *.settings en *.py qui facilitera l'interprétation des paramètres des filtres dans la console Python.

Les listes imbriquées des paramètres des filtres sont -- par conception -- des expressions TinyScheme parce qu'en Lisp, données et programmes peuvent être interchangeables quand le parenthésage est équilibré.

Le grand mystère qui demeure est l'encapsulation des paramètres de chaque filtre par des commentaires Python incompatibles avec TinyScheme.
Si encore les développeurs de Gimp avaient mis un caractère autre que l'espace juste après le dièse "#", TinyScheme aurait pu lever l'incompatibilité de ces commentaires alien schismatiques entre la fin de fichier et le néant.

Qu'importe, dans les *.scm générés dans "session01" au-dessus du sous-dossier "filters", ces commentaires qui étouffent lentement leurs victimes ont été fraîchement modérés au nom de la compatibilité TinyScheme. :mrgreen:

Gimphried
Messages : 65
Inscription : 21 mai 2020, 16:52

[traçabilité] [journal d'améliorations] Gimp vers Calc

Message par Gimphried »

4.2 [traçabilité][journal d'améliorations] Conversion automatique des réglages de filtres de Gimp au format CSV pour Calc
Marat a écrit :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")
:arrow: La cible du format de sortie est identifiée : il s'agit de LibreOffice Calc.

Il faudrait détailler la syntaxe des intervalles de niveaux "75-1,18-224" : 75 à 1, 18 à 224 pour quels niveaux ?

A partir de filters\GimpLevelsConfig.settings converti en GimpLevelsConfig.scm TinyScheme, la réécriture automatique a permis la génération au format CSV compatible LibreOffice Calc.

Dans la session02, Gimp menu "Couleurs" > "Niveaux..." a été fait une seconde fois afin de vérifier la séquence d'horodatage. Le première réglage est équivalent à celui de l'étape 3 de la session 01.

Le fichier Calc .csv généré avec entête est :

Code : Tout sélectionner

Date,Hour,linear,clamp-input,clamp-output,value,,,,,red,,,,,green,,,,,blue,,,,,alpha,,,,,
,,,,,low-input,high-input,gamma,low-output,high-output,LoIn,HiIn,Gamm,LoOu,HiOu,LoIn,HiIn,Gamm,LoOu,HiOu,LoIn,HiIn,Gamm,LoOu,HiOu,LoIn,HiIn,Gamm,LoOu,HiOu
"2020-06-15","23:23:49",0,0,0,0.2941176471,0.8784313725,1,0.07058823529,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1
"2020-06-15","23:21:30",0,0,0,0,1,1,0,1,0,1,5,0,1,0,1,1,0,1,0,1,0.5,0,1,0,1,1,0,1
Pour l'étape 1 de la session01 sur la désaturation, GimpHueSaturationConfig.csv généré est :

Code : Tout sélectionner

Date,Hour,all,,,red,,,yellow,,,green,,,cyan,,,blue,,,magenta,,,overlap
,,hue,saturation,lightness,Hue,Satu,Ligh,Hue,Satu,Ligh,Hue,Satu,Ligh,Hue,Satu,Ligh,Hue,Satu,Ligh,Hue,Satu,Ligh
"2020-06-13","18:48:52",0,-0.4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Finalement, la session01 se terminait à l'étape 4 par un réglage du filtre de luminosité et de contraste généré dans GimpBrightnessContrastConfig.csv :

Code : Tout sélectionner

Date,Hour,brightness,contrast
"2020-06-13","18:54:37",0.2440944882,-0.2440944882
Gimp menu "Filtres" > "Script-Fu" > "Console"

Code : Tout sélectionner

(load "C:/Tool/Gimp/forum/Linuxgraphic/dam/GimpDamCsv.scm")
namePrjnameApppathRootnameSessionpathPrjnbrCsvisHueSatisLevelsisBriCntr
portOutGenHeaderlistShortenListValNoGenValue
GenMacBodyCsvGenMacroGimpToCsvGenCSVGenFilterToCsvMain


Gimp Digital Asset Mngt in progress on session01...
1: GimpDamCsv SUCCESSFULLY built GimpBrightnessContrastConfig CSV!
2: GimpDamCsv SUCCESSFULLY built GimpHueSaturationConfig CSV!
3: GimpDamCsv SUCCESSFULLY built GimpLevelsConfig CSV!
#t

Répondre