FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Problème de math
par papydall Aujourd'hui à 1:53

» A propos des attributs de fichier
par papydall Hier à 14:33

» Problème de math
par Marc37 Sam 21 Oct 2017 - 23:04

» I Love You
par papydall Sam 21 Oct 2017 - 19:22

» Un petit "coucou" à tous les Panoramiciens !
par mindstorm Sam 21 Oct 2017 - 17:06

» MARK_ON déclenche un événement ON_CLICK à la place de ...
par Jean Claude Mer 18 Oct 2017 - 18:08

» mise a jour calculatrice
par joeeee2017 Mer 18 Oct 2017 - 15:57

» [solved] 3D_LINE How to ?
par Jicehel Mer 18 Oct 2017 - 11:01

» Convertisseur de base 10 de 2 à 36
par gigi75 Mar 17 Oct 2017 - 18:49

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» Calculatrice
par Jean Claude Sam 14 Oct 2017 - 12:30

» Compilateur FBPano
par jean_debord Jeu 12 Oct 2017 - 9:53

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

» à propos de Panoramic_Editor [Résolu]
par Klaus Mar 10 Oct 2017 - 3:19

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Traitement d'images

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Traitement d'images   Ven 11 Juil 2014 - 15:34

J'espère que c'est plus les vacances que les résultats du football  Rolling Eyes qui ont mis un peu le forum en sommeil !

J'ai redécouvert un logiciel de traitement d'images que j'utilisais autrefois sous Dos et QBasic (autrement dit dans l'Antiquité). Mais apparemment il est toujours suivi et actualisé.
Gros avantages pour moi:
- il est gratuit  Very Happy 
- il ne nécessite pas d'installation: c'est un exécutable unique qu'on met où on veut.
- il s'utilise en ligne de commande, donc facilement avec un Execute_Wait sous Panoramic.
Il s'appelle Nconvert.exe, on peut le télécharger ici à la source, entre autres: http://www.xnview.com/fr/nconvert/
On lui donne un nom d'image (ou de série d'images), un nom de fichier résultat et des paramètres pour exécuter toutes sortes de manipulations sur l'image.
   Taper Nconvert.exe -help en ligne de commande pour voir toutes les options possibles.

Le nom du fichier à traiter est toujours en dernier dans la ligne de commande.

J'ai fait une toute petite sub qui sert d'interface, on lui passe les noms de fichiers et la ligne d'options.
Et un programme d'expérimentation qui permet de voir immédiatement l'effet des commandes.
On verra dans le help qu'il y a tout un tas d'options et d'effets spéciaux à tester.
Mon programme utilise un fichier image test banal de 640x480 pixels, il faudra adapter les fenêtres pour un autre format.
On rentre dans l'Edit de saisie la ligne des commandes, puis cliquer 'Exec' pour voir le résultat.

L'incrustation de textes dans l'image est assez puissante, il faut savoir qu'il faut donner la chaîne en dernier, après les autres paramètres, par exemple:
Code:
Nconvert.exe -out bmp -o C:\Temp\Result.bmp -text_font "Arial" 16 -text_color 255 255 0 -text_pos 50 100 -text_rotation 15 -text "Au clair de la lune" C:\Images\Goldgate.jpg
-> texte jaune, police Arial, taille 16, position x=50 y=100, incliné de 15°
Le paramètre -out est le format de sortie, on peut mettre -out clipboard, dans ce cas le paramètre -o (nom du fichier résultat) n'existe pas.

Voici le petit programme d'expérimentation et la sub correspondante:
Code:
LABEL Exec, Listop
DIM nc$, f$, ftm$, arg$, a$

nc$ = "C:\UTIL\Nconvert.exe ": ' emplacement de Nconvert.exe
f$ = "C:\GRAPH\JPG\Goldgate.jpg": ' fichier image test, 640x480 pixels
ftm$ = "C:\TEMP\Tmp.txt"

WIDTH 0,1310: HEIGHT 0,695: COLOR 0,164,255,255: FONT_BOLD 0
CAPTION 0,"   -   TESTS   DE   NCONVERT.EXE   -
PICTURE 1: TOP 1,20: LEFT 1,5: WIDTH 1,640: HEIGHT 1,480
FILE_LOAD 1,f$
PICTURE 2: TOP 2,TOP(1): LEFT 2,650: WIDTH 2,640: HEIGHT 2,480

ALPHA 3: TOP 3,5: LEFT 3,300: CAPTION 3," AVANT ": COLOR 3,255,255,0
ALPHA 4: TOP 4,TOP(3): LEFT 4,940: CAPTION 4," APRÈS ": COLOR 4,255,255,0
ALPHA 9: TOP 9,TOP(1)+HEIGHT(1)+10: LEFT 9,5: COLOR 9,255,255,0
CAPTION 9,"Commande Nconvert:"
EDIT 10: TOP 10,TOP(9)-3: LEFT 10,130: WIDTH 10,1080: TEXT 10,"-"
FONT_NAME 10,"Lucida Console": FONT_SIZE 10,9
BUTTON 11: TOP 11,TOP(10): LEFT 11,LEFT(10)+WIDTH(10): CAPTION 11,"Exec"
ON_CLICK 11,Exec
BUTTON 12: TOP 12,TOP(9)+16: LEFT 12,5: WIDTH 12,170: CAPTION 12,"Liste complète des options"
ON_CLICK 12,Listop
MEMO 20: TOP 20,TOP(12)+30: LEFT 20,5: WIDTH 20,1280: HEIGHT 20,95
FONT_NAME 20,"Lucida Console"
ITEM_ADD 20,"          * PRINCIPALES OPTIONS (précédées de '-') *"
a$="-brightness valeur : luminosité, -100 à 100   -contrast valeur : contraste, -100 à 100"
a$=a$+"     -gamma valeur : gamma, 0.01 à 5.0": ITEM_ADD 20,a$
a$="-crop x y w h      : découpage d'une zone     -resize w h      : redimensionner       "
a$=a$+"     -rotate valeur: rotation image en degrés (+/-)": ITEM_ADD 20,a$
a$="-edetail           : augmenter les détails    -noise reduce    : réduction du bruit        "
a$=a$+"-emboss       : effet métal repoussé": ITEM_ADD 20,a$
a$="-replace r g b r g b: remplacer une couleur   -grey valeur     : nuances de gris (256,128,64,32,16,8 ou 4)"
ITEM_ADD 20,a$
a$="-xflip             : symétrie horizontale     -yflip           : symétrie verticale"
ITEM_ADD 20,a$
a$="-text chaîne       : surimpression texte, précédé des options police, taille, couleur, position, "
a$=a$+"couleur de fond éventuelle, rotation (à voir)"
ITEM_ADD 20,a$
END
' ==============================================================================
Exec:
arg$ = TEXT$(10): IF LEN(arg$) < 2 THEN RETURN
Nconvert(f$,arg$,"")
CLIPBOARD_PASTE 2: ' résultat
RETURN
' ==============================================================================
Listop:
EXECUTE_WAIT "CMD.exe /C "+nc$ + "-help >" + ftm$
EXECUTE_WAIT "Notepad.exe " + ftm$
FILE_DELETE ftm$
RETURN
' ==============================================================================
SUB Nconvert(forig$,arg$,fdes$)
' Traitements sur un fichier image forig$
' Résultat dans fdes$, ou dans le clipboard si fdes$ = ""
' ------------------------------------------------------------------------------
' Nconvert.exe, gratuit, téléchargeable ici: http://www.xnview.com/fr/nconvert/
' ------------------------------------------------------------------------------
' Options principales de Nconvert.exe, à placer dans arg$
' (Voir toutes les options: taper Nconvert.exe -help en ligne de commande)
' -brightness valeur : luminosité, -100 à 100
' -contrast valeur   : contraste, -100 à 100
' -crop x y w h      : découpage d'une zone
' -edetail           : augmenter les détails
' -emboss            : 'embossage' imitation métal repoussé
' -gamma valeur      : gamma, 0.01 à 5.0
' -grey valeur       : convertir en nuances de gris (256,128,64,32,16,8 ou 4)
' -negate            : inversion en négatif
' -noise reduce      : réduction du bruit
' -replace r g b r g b : remplacer une couleur par une autre
' -resize w h        : redimensionner
' -rotate valeur     : rotation de l'image, en degrés (+ ou -)
' -text chaîne       : insérer la chaîne de caractères, à placer en dernier,
'                      après text_font, text_color, text_back, text_pos, text_rotation
'                      Exemple: -text_font "Arial" 16 -text_color 255 0 0 -text "Le Texte"
' -xflip             : symétrie horizontale
' -yflip             : symétrie verticale
DIM_LOCAL su$, a$, nc$: nc$ = "C:\UTIL\Nconvert.exe "
IF fdes$ = ""
    a$ = " -out clipboard": ' pour résultat dans le clipboard
ELSE
    su$ = MID$(FILE_EXTRACT_EXTENSION$(fdes$),2,3): ' sans le '.'
    a$ = " -out "+su$+" -o " + fdes$
END_IF
EXECUTE_WAIT "CMD.exe /C " + nc$ + a$ + " " + arg$ + " " + forig$
END_SUB
' ==============================================================================
Exemple: application du paramètre -swirl 180
Options à tester (entre autres):
-edgedetect (surlignage des bords d'objets)
-emboss (effet métal repoussé)
-lens (effet loupe)
-mosaic (pixellisation)
-oil (effet peinture à l'huile)
-shear (froissage ?)
-swirl (déformation circulaire)
+ toutes les possibilités de changements, permutations de couleurs, etc.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5858
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Traitement d'images   Sam 12 Juil 2014 - 0:32

Excellent outil qui mérite bien une belle interface Panoramic.
Je ne sais pas si tu veux pousser plus loin dans l'interface, mais tu pourrais ajouter des bouton pour les effets et des potentiomètres voir une possibilité de prévisualiser plusieurs aperçus pour des effets paramétrable (genre 9 vignettes pour le swirl avec les valeurs 25 50 75 100 125 150 175 200 225) pour aider dans le choix du bon paramètre.
Pareil pour la luminosité, pareil pour le contraste, peut être même pour le gama.
Voir un effet de test des effets avec 9 vignettes (une avec l'effet de surlignage des bords d'objets, une avec l'effet métal repoussé, une avec l'effet loupe, une avec l'effet de pixellisation, une avec l'effet peinture à l'huile, une avec l'effet froissage, une avec la déformation circulaire, une en nuance de gris et une avec m'augmentation des détails)

Voilà, c'était ma petite réflexion sur l'interface avec ce bel outil en ligne de commande qui peut rendre pas mal de service. (Pareil, tu peux intégrer les autres procédures que l'on a déjà comme le renommage par lot des images par exemple et le traitement par lot pour traiter par exemple un tas d'images que l'on voudrait renommer et redimensionner à une taille fixe)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7994
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Sam 12 Juil 2014 - 13:32

cheers Encore une super trouvaille de JL35 !

Comme quoi l' ancien a du bon...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Traitement d'images   Sam 12 Juil 2014 - 16:00

J'y ai bien pensé jicehel, mais il me semble que ça entraînerait un peu loin, il y a tellement d'options possibles !
Dont beaucoup dont je ne sais même pas ce qu'elles font, notamment les manipulations de couleurs.
Et d'un autre côté c'est facile de changer le paramètre et de relancer, on a l'effet immédiat grandeur nature, sur des imagettes on verrait l'effet relatif, mais avec moins de précision...

Et je n'ai pas été fichu de trouver un tutoriel, ça ne semble pas exister, à part la liste brute des options.
Je viens de voir qu'il y a quand même un forum (lien sur la page d'accueil du programme, dont j'ai donné la référence), en anglais évidemment. A voir.

Ce qui m'étonne, c'est que manifestement l'auteur est français (Pierre Gougelet, domicilié en France pour le forum), qu'il y a des traductions de ce programme dans une bonne vingtaine de langues (dont le basque...), mais je n'en ai trouvé aucune en français !

Je précise que dans ma petite interface, il suffit de donner les options à essayer, avec leurs paramètres éventuels, le reste est géré par le programme, par exemple entrer simplement: -resize 320 240, c'est tout. Le résultat est rendu dans le clipboard, qui est chargé dans le picture de droite.
Si on voulait le résultat dans un fichier.. voir dans la sub.

@ygeronimi
Quand tu dis que 'l'ancien a du bon', tu parles de moi ou du programme ?  Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5858
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Traitement d'images   Sam 12 Juil 2014 - 18:17

Je vais faire quelque recherche car NCONVERT 3.87 du 19/08/2003 a été écrit par Pierre Gougelet, mais pour l'Atari ST ... (C'était d'ailleurs xconvert qui incluait nconvert et nview). Xconvert et devenu XnConvert et c'est aussi un programme d'édition mais au travers d'une interface GUI (pour les fainéants qui ne voudraient pas en écrire)
C'est vrai que le nombre d'options est impressionnant:
Options:
 


C'est super puissant, on peut par exemple convertir en une ligne un ensemble de fichiers pdf en images tiff, ça donnerait ça:
nconvert -o $\%.tif -out tiff -levels 130 180 -binary nodither -dpi 200 -xall -multi "C:\users\test\Desktop\PDFs\*"

Pour convertir une série d'images s'appelant au format pic qui s'appeleraient toutes AncienNom suivit de 2 chiffres en jpeg gardant les même 2 chiffres mais commençant par un nouveau nom, il suffit d'écrire:
nconvert -out jpeg -n 1 10 1 -o NouveauNom##.jpg AncienNom##.pic

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7994
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Sam 12 Juil 2014 - 19:16

@ JL35,

...heuuuu...les deux mon capitaine !

 lol!  lol!  lol!  lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7994
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Sam 12 Juil 2014 - 19:20

Je vais essayer de m' amuser avec...
...comme je n' ai pas d' idée en tête, cela va m' occuper.
 lol!

Ouaouh !!! je crois que je me suis un peu lancé trop vite. Rolling Eyes 
Vue le nombre de fonctions, je pense qu' il vaut mieux s' en servir au coup par coup et au besoin... Wink 
Ou alors télécharge le Gui qui va avec... Embarassed
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Traitement d'images   Sam 12 Juil 2014 - 21:26

Ben non justement, l'interface était justement faite pour ça, simplement taper une des options et voir tout de suite le résultat... évidemment il faut avoir sous les yeux la liste des options  qu'a donné jicehel (ou cliquer 'voir les options').
Perso je me les suis imprimé, c'est plus facile à consulter. Et à annoter éventuellement.
Il faut partir d'une image simple comme la mienne, aux dimensions de la fenêtre.

Le programme était fait uniquement dans ce but: tester les possibilités de nconvert en essayant les différentes options avec différents paramètres.

Là je suis en train de recoder un truc (suggestion de jicehel) pour avoir les options principales sous les yeux et rentrer simplement leurs paramètres, pour faciliter les essais.
Mais il restera quand même toutes les options exotiques, mais il faut être un peu spécialiste des couleurs dans les images pour comprendre leur utilité...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5858
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Traitement d'images   Sam 12 Juil 2014 - 22:51

C'est sûr que vu le nombres d'options, il est difficile de prévoir toutes les possibilités. Mais déjà avec un bon interfaçage des fonctions standards, il y a de quoi faire.

Rien que la gestion du renommage des images et la conversion des formats, déjà ça économise quelques lignes de code
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Traitement d'images   Dim 13 Juil 2014 - 0:09

J'ai commencé à faire quelque chose, plutôt dans l'idée de ton premier message, il me reste à caser ce que j'ai oublié: la conversion en négatif et la rotation éventuelle du texte.
Ce qui donne ceci:
Pour toutes les autres options, il faut les rentrer à la main dans l'edit 'Command Nconvert'
Le contenu préalable de l'edit est combiné avec les options cochées ou modifiées au-dessous, et c'est l'ensemble qui est affiché dans l'edit et exécuté.

Et il vaut mieux tout réinitialiser (bouton) avant chaque nouvel essai, sinon ça s'accumule dans la ligne de commande (mais la longueur de la ligne ne semble pas déranger nconvert).
Ce sera peut-être pour lundi (demain, journée chargée), si vous avez des remarques, allez-y, c'est fait pour !

Remarque: l'ordre des commandes est important.
Sur l'image ci-dessus, on a la commande 'swirl' puis la commande 'text' pour ce résultat.
Si on met la commande swirl à la fin, le texte appartient déjà à l'image et est pivoté et déformé avec elle.
C'est fou les possibilités, en une seule ligne...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Traitement d'images   Dim 13 Juil 2014 - 1:23

Voilà un premier jet, qui correspond à l'image ci-dessus, avec en plus la conversion en niveaux de gris et la rotation de texte, il y a déjà de quoi s'amuser...
La traduction des noms d'options est parfois assez approximative, à vérifier et peut-être préciser.
Code:

LABEL Chfic, Reinit, Exec, Listop, Chfont, Chfont1, Razcom
LABEL Trk21,Trk26,Trk31,Trk36,Trk41,Trk46,Trk51,Trk56,Trk61,Trk66,Trk71,Trk76
LABEL Trk81,Trk86,Trk91,Trk96,Trk101,Trk106
DIM nc$, f$, ftm$, arg$, a$, b$, c%, i%, j%, e%, wp%, hp%, w%, h%, cpt$
DIM t1,t2,t3,l1,l2,l3,lf,wtc

nc$ = "C:\UTIL\Nconvert.exe ": ' emplacement de Nconvert.exe
f$ = "C:\GRAPH\JPG\Goldgate.jpg": ' fichier image test, 640x480 pixels
ftm$ = "C:\TEMP\Tmp.txt"
cpt$ = "  -  TESTS  DE  NCONVERT.EXE  -    "

WIDTH 0,1310: HEIGHT 0,850: COLOR 0,164,255,255: FONT_BOLD 0
CAPTION 0,cpt$+f$: BORDER_SMALL 0
font_name 0,"Calibri": font_size 0,10
wp% = 640: hp% = 480
PICTURE 1: TOP 1,20: LEFT 1,5: WIDTH 1,wp%: HEIGHT 1,hp%
FILE_LOAD 1,f$
PICTURE 2: TOP 2,TOP(1): LEFT 2,wp%+10: WIDTH 2,wp%: HEIGHT 2,hp%

ALPHA 3: TOP 3,5: LEFT 3,270: CAPTION 3," AVANT (image.jpg) ": COLOR 3,255,255,0
ALPHA 4: TOP 4,TOP(3): LEFT 4,920: CAPTION 4," APRÈS (clipboard) ": COLOR 4,255,255,0
LIST 8: TOP 8,TOP(1)+HEIGHT(1)+3: LEFT 8,5: WIDTH 8,1285: HEIGHT 8,18
FONT_NAME 8,"Lucida Console": FONT_SIZE 8,10: FONT_COLOR 8,128,0,0: COLOR 8,255,255,0
ALPHA 9: TOP 9,TOP(1)+HEIGHT(1)+27: LEFT 9,5: COLOR 9,255,255,0
CAPTION 9,"Commande Nconvert:"
EDIT 10: TOP 10,TOP(9): LEFT 10,130: WIDTH 10,1100: TEXT 10,"-"
FONT_NAME 10,"Lucida Console": FONT_SIZE 10,9
BUTTON 11: TOP 11,TOP(10): LEFT 11,LEFT(10)+WIDTH(10): WIDTH 11,60: CAPTION 11,"RAZ"
ON_CLICK 11,Razcom

BUTTON 15: TOP 15,-1: LEFT 15,5: HEIGHT 15,22: CAPTION 15,"Fichier"
ON_CLICK 15,Chfic
OPEN_DIALOG 16

t1 = TOP(10)+30: l1 = 5: l2 = WIDTH(0)/3: l3 = 2*WIDTH(0)/3 : wtc = 325
lf = l1
i% = 20: ALPHA i%: TOP i%,t1: LEFT i%,lf: CAPTION i%,"Luminosité :"
i%=i%+1: TRACK_BAR i%: TOP i%,TOP(i%-1)-2: LEFT i%,LEFT(i%-1)+60: WIDTH i%,wtc
i%=i%+1: EDIT i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)-5: WIDTH i%,35
        MIN i%-1,-100: MAX i%-1,100: POSITION i%-1,0: TEXT i%,"0"
        ON_CHANGE i%-1,Trk21
i% = 25: ALPHA i%: TOP i%,t1+20: LEFT i%,lf: CAPTION i%,"Contraste :"
i%=i%+1: TRACK_BAR i%: TOP i%,TOP(i%-1)-2: LEFT i%,LEFT(i%-1)+60: WIDTH i%,wtc
i%=i%+1: EDIT i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)-5: WIDTH i%,35
        MIN i%-1,-100: MAX i%-1,100: POSITION i%-1,0: TEXT i%,"0"
        ON_CHANGE i%-1,Trk26
i% = 30: ALPHA i%: TOP i%,t1+40: LEFT i%,lf: CAPTION i%,"Gamma :"
i%=i%+1: TRACK_BAR i%: TOP i%,TOP(i%-1)-2: LEFT i%,LEFT(i%-1)+60: WIDTH i%,wtc
i%=i%+1: EDIT i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)-5: WIDTH i%,35
        MIN i%-1,5: MAX i%-1,500: POSITION i%-1,100: TEXT i%,"1.00"
        ON_CHANGE i%-1,Trk31
i% = 35: ALPHA i%: TOP i%,t1+60: LEFT i%,lf: CAPTION i%,"Netteté :"
i%=i%+1: TRACK_BAR i%: TOP i%,TOP(i%-1)-2: LEFT i%,LEFT(i%-1)+60: WIDTH i%,wtc
i%=i%+1: EDIT i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)-5: WIDTH i%,35
        MIN i%-1,0: MAX i%-1,100: POSITION i%-1,0: TEXT i%,"0"
        ON_CHANGE i%-1,Trk36
i% = 40: ALPHA i%: TOP i%,t1+80: LEFT i%,lf: CAPTION i%,"Adoucir :"
i%=i%+1: TRACK_BAR i%: TOP i%,TOP(i%-1)-2: LEFT i%,LEFT(i%-1)+60: WIDTH i%,wtc
i%=i%+1: EDIT i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)-5: WIDTH i%,35
        MIN i%-1,0: MAX i%-1,100: POSITION i%-1,0: TEXT i%,"0"
        ON_CHANGE i%-1,Trk41
i% = 45: ALPHA i%: TOP i%,t1+100: LEFT i%,lf: CAPTION i%,"Flou :"
i%=i%+1: TRACK_BAR i%: TOP i%,TOP(i%-1)-2: LEFT i%,LEFT(i%-1)+60: WIDTH i%,wtc
i%=i%+1: EDIT i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)-5: WIDTH i%,35
        MIN i%-1,0: MAX i%-1,100: POSITION i%-1,0: TEXT i%,"0"
        ON_CHANGE i%-1,Trk46
lf = l2
i% = 50: ALPHA i%: TOP i%,t1: LEFT i%,lf: CAPTION i%,"Rotation :"
i%=i%+1: TRACK_BAR i%: TOP i%,TOP(i%-1)-2: LEFT i%,LEFT(i%-1)+60: WIDTH i%,wtc
i%=i%+1: EDIT i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)-5: WIDTH i%,35
        MIN i%-1,0: MAX i%-1,360: POSITION i%-1,0: TEXT i%,"0"
        ON_CHANGE i%-1,Trk51
i% = 55: ALPHA i%: TOP i%,t1+20: LEFT i%,lf: CAPTION i%,"Dét. bords:"
i%=i%+1: TRACK_BAR i%: TOP i%,TOP(i%-1)-2: LEFT i%,LEFT(i%-1)+60: WIDTH i%,wtc
i%=i%+1: EDIT i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)-5: WIDTH i%,35
        MIN i%-1,0: MAX i%-1,100: POSITION i%-1,0: TEXT i%,"0"
        ON_CHANGE i%-1,Trk56
i% = 60: ALPHA i%: TOP i%,t1+40: LEFT i%,lf: CAPTION i%,"Loupe :"
i%=i%+1: TRACK_BAR i%: TOP i%,TOP(i%-1)-2: LEFT i%,LEFT(i%-1)+60: WIDTH i%,wtc
i%=i%+1: EDIT i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)-5: WIDTH i%,35
        MIN i%-1,0: MAX i%-1,100: POSITION i%-1,0: TEXT i%,"0"
        ON_CHANGE i%-1,Trk61
i% = 65: ALPHA i%: TOP i%,t1+60: LEFT i%,lf: CAPTION i%,"Mosaïque:"
i%=i%+1: TRACK_BAR i%: TOP i%,TOP(i%-1)-2: LEFT i%,LEFT(i%-1)+60: WIDTH i%,wtc
i%=i%+1: EDIT i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)-5: WIDTH i%,35
        MIN i%-1,0: MAX i%-1,64: POSITION i%-1,0: TEXT i%,"0"
        ON_CHANGE i%-1,Trk66
i% = 70: ALPHA i%: TOP i%,t1+80: LEFT i%,lf: CAPTION i%,"Huile :"
i%=i%+1: TRACK_BAR i%: TOP i%,TOP(i%-1)-2: LEFT i%,LEFT(i%-1)+60: WIDTH i%,wtc
i%=i%+1: EDIT i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)-5: WIDTH i%,35
        MIN i%-1,0: MAX i%-1,16: POSITION i%-1,0: TEXT i%,"0"
        ON_CHANGE i%-1,Trk71
i% = 75: ALPHA i%: TOP i%,t1+100: LEFT i%,lf: CAPTION i%,"Postériser:"
i%=i%+1: TRACK_BAR i%: TOP i%,TOP(i%-1)-2: LEFT i%,LEFT(i%-1)+60: WIDTH i%,wtc
i%=i%+1: EDIT i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)-5: WIDTH i%,35
        HEIGHT i%-1,20: MIN i%-1,0: MAX i%-1,256: POSITION i%-1,0: TEXT i%,"0"
        ON_CHANGE i%-1,Trk76
lf = l3
i% = 80: ALPHA i%: TOP i%,t1: LEFT i%,lf: CAPTION i%,"Solariser :"
i%=i%+1: TRACK_BAR i%: TOP i%,TOP(i%-1)-2: LEFT i%,LEFT(i%-1)+60: WIDTH i%,wtc
i%=i%+1: EDIT i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)-5: WIDTH i%,35
        MIN i%-1,0: MAX i%-1,255: POSITION i%-1,0: TEXT i%,"0"
        ON_CHANGE i%-1,Trk81
i% = 85: ALPHA i%: TOP i%,t1+20: LEFT i%,lf: CAPTION i%,"Sépia :"
i%=i%+1: TRACK_BAR i%: TOP i%,TOP(i%-1)-2: LEFT i%,LEFT(i%-1)+60: WIDTH i%,wtc
i%=i%+1: EDIT i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)-5: WIDTH i%,35
        MIN i%-1,0: MAX i%-1,100: POSITION i%-1,0: TEXT i%,"0"
        ON_CHANGE i%-1,Trk86
i% = 90: ALPHA i%: TOP i%,t1+40: LEFT i%,lf: CAPTION i%,"Dépoli :"
i%=i%+1: TRACK_BAR i%: TOP i%,TOP(i%-1)-2: LEFT i%,LEFT(i%-1)+60: WIDTH i%,wtc
i%=i%+1: EDIT i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)-5: WIDTH i%,35
        MIN i%-1,0: MAX i%-1,32: POSITION i%-1,0: TEXT i%,"0"
        ON_CHANGE i%-1,Trk91
i% = 95: ALPHA i%: TOP i%,t1+60: LEFT i%,lf: CAPTION i%,"Tourbillon:"
i%=i%+1: TRACK_BAR i%: TOP i%,TOP(i%-1)-2: LEFT i%,LEFT(i%-1)+60: WIDTH i%,wtc
        HEIGHT i%,20
i%=i%+1: EDIT i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)-5: WIDTH i%,35
        MIN i%-1,0: MAX i%-1,360: POSITION i%-1,0: TEXT i%,"0"
        ON_CHANGE i%-1,Trk96
i% = 100: CHECK i%: TOP i%,t1+80: LEFT i%,lf: WIDTH i%,200: CAPTION i%,"Niveaux de gris:"
i%=i%+1: CONTAINER_OPTION i%: TOP i%,TOP(i%-1): LEFT i%,lf+115: WIDTH i%,300
        HEIGHT i%,20
i%=i%+1: OPTION i%: PARENT i%,101: LEFT i%,5: CAPTION i%,"256"
i%=i%+1: OPTION i%: PARENT i%,101: LEFT i%,LEFT(i%-1)+45: CAPTION i%,"216"
i%=i%+1: OPTION i%: PARENT i%,101: LEFT i%,LEFT(i%-1)+45: CAPTION i%,"128"
i%=i%+1: OPTION i%: PARENT i%,101: LEFT i%,LEFT(i%-1)+45: CAPTION i%,"64"
i%=i%+1: OPTION i%: PARENT i%,101: LEFT i%,LEFT(i%-1)+40: CAPTION i%,"32"
i%=i%+1: OPTION i%: PARENT i%,101: LEFT i%,LEFT(i%-1)+40: CAPTION i%,"16"
i%=i%+1: OPTION i%: PARENT i%,101: LEFT i%,LEFT(i%-1)+40: CAPTION i%,"8"
        MARK_ON 102

t2 = t1+125: e% = 140
i% = 110: CHECK i%: TOP i%,t2: LEFT i%,l1: CAPTION i%,"Accentuer les détails"
i%=i%+1: CHECK i%: TOP i%,t2: LEFT i%,LEFT(i%-1)+e%: CAPTION i%,"Effet métal repoussé"
i%=i%+1: CHECK i%: TOP i%,t2: LEFT i%,LEFT(i%-1)+e%: CAPTION i%,"Equalize"
i%=i%+1: CHECK i%: TOP i%,t2+18: LEFT i%,l1: CAPTION i%,"Restore focus"
i%=i%+1: CHECK i%: TOP i%,t2+18: LEFT i%,LEFT(i%-1)+e%: CAPTION i%,"Correction couleurs"
i%=i%+1: CHECK i%: TOP i%,t2+18: LEFT i%,LEFT(i%-1)+e%: CAPTION i%,"Conversion Négatif"
i%=i%+1: CHECK i%: TOP i%,t2+36: LEFT i%,l1: CAPTION i%,"Réduction du bruit"
i%=i%+1: CHECK i%: TOP i%,t2+36: LEFT i%,LEFT(i%-1)+e%: CAPTION i%,"Symétrie Horizontale"
i%=i%+1: CHECK i%: TOP i%,t2+36: LEFT i%,LEFT(i%-1)+e%: CAPTION i%,"Symétrie Verticale"
FOR j%=110 TO i%: WIDTH j%,e%: NEXT j%

i% = 150: CHECK i%: TOP i%,t2: LEFT i%,l2: WIDTH i%,300
CAPTION i%,"Redimensionner: W=                    H="
i%=i%+1: SPIN i%: TOP i%,t2-2: LEFT i%,LEFT(i%-1)+133: WIDTH i%,50
i%=i%+1: SPIN i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+75: WIDTH i%,50
i% = 160: CHECK i%: TOP i%,t2+30: LEFT i%,l2: WIDTH i%,400
CAPTION i%,"Découper:              X=                    Y=                    W=                    H="
i%=i%+1: SPIN i%: TOP i%,TOP(i%-1)-2: LEFT i%,LEFT(i%-1)+135: WIDTH i%,50
i%=i%+1: SPIN i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+75: WIDTH i%,50
i%=i%+1: SPIN i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+75: WIDTH i%,50
i%=i%+1: SPIN i%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+75: WIDTH i%,50

t3 = t2+60
c% = 169: CONTAINER c%: TOP c%,t3-5: LEFT c%,5: WIDTH c%,920: HEIGHT c%,78
COLOR c%,128,255,255
i% = 170: CHECK i%: PARENT i%,c%: TOP i%,3: LEFT i%,l1: CAPTION i%,"Texte:"
i%=i%+1: EDIT i%: PARENT i%,c%: TOP i%,TOP(i%-1): LEFT i%,60: WIDTH i%,850
i%=i%+1: ALPHA i%: PARENT i%,c%: TOP i%,30: LEFT i%,15: CAPTION i%,"Posit. X=                  Y="
i%=i%+1: SPIN i%: PARENT i%,c%: TOP i%,TOP(i%-1)-3: LEFT i%,65: WIDTH i%,50
i%=i%+1: SPIN i%: PARENT i%,c%: TOP i%,TOP(i%-1): LEFT i%,135: WIDTH i%,50
i%=i%+1: EDIT i%: PARENT i%,c%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+60: WIDTH i%,120
        TEXT i%,"Arial": ON_CLICK i%,Chfont
i%=i%+1: SPIN i%: PARENT i%,c%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+WIDTH(i%-1)+5: WIDTH i%,45
        POSITION i%,12
' couleur texte
i% = 177: ALPHA i%: PARENT i%,c%: TOP i%,TOP(172): LEFT i%,LEFT(i%-1)+50
          CAPTION i%,"Couleur  R=                G=                  B="
i%=i%+1: SPIN i%: PARENT i%,c%: TOP i%,TOP(173): LEFT i%,LEFT(i%-1)+65: WIDTH i%,45
i%=i%+1: SPIN i%: PARENT i%,c%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+65: WIDTH i%,45
i%=i%+1: SPIN i%: PARENT i%,c%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+65: WIDTH i%,45
' couleur fond
i% = 181: CHECK i%: PARENT i%,c%: TOP i%,TOP(i%-1)+2: LEFT i%,LEFT(i%-1)+60: WIDTH i%,400
          CAPTION i%,"Couleur fond  R=                G=                  B="
i%=i%+1: SPIN i%: PARENT i%,c%: TOP i%,TOP(173): LEFT i%,LEFT(i%-1)+110: WIDTH i%,45
i%=i%+1: SPIN i%: PARENT i%,c%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+65: WIDTH i%,45
i%=i%+1: SPIN i%: PARENT i%,c%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+65: WIDTH i%,45
        FOR j% = 178 TO 184
            IF j%<>181 THEN MIN j%,0: MAX j%,255
        NEXT j%
        POSITION 182,255: POSITION 183,255: POSITION 184,255
i% = 185: CHECK i%: PARENT i%,c%: TOP i%,TOP(181)+25: LEFT i%,LEFT(181): WIDTH i%,200
          CAPTION i%,"Rotation:                  degrés."
i%=i%+1: SPIN i%: PARENT i%,c%: TOP i%,TOP(i%-1): LEFT i%,LEFT(i%-1)+75: WIDTH i%,45
' ------------------------------------------------------------------------------
i% = 190: BUTTON i%: TOP i%,t2: LEFT i%,l3+150: WIDTH i%,150
CAPTION i%,"Liste des options": ON_CLICK i%,Listop
i% = 191: BUTTON i%: TOP i%,TOP(i%-1)+60: LEFT i%,LEFT(i%-1): WIDTH i%,150
CAPTION i%,"Réinitialiser tout": ON_CLICK i%,Reinit
i% = 192: BUTTON i%: TOP i%,TOP(i%-1)+35: LEFT i%,LEFT(i%-1): WIDTH i%,150
CAPTION i%,"Appliquer": ON_CLICK i%,Exec

FORM 300: HIDE 300: TOP 300,HEIGHT(0)-460: LEFT 300,LEFT(175)+5: WIDTH 300,180
HEIGHT 300,400: BORDER_SMALL 300: CAPTION 300," -  POLICES  -"
LIST 301: PARENT 301,300: FULL_SPACE 301: FONT_NAMES_LOAD 301: COLOR 301,255,255,180
FOR i% = COUNT(301) TO 1 STEP -1
    IF LEFT$(ITEM_READ$(301,i%),1) = "@" THEN ITEM_DELETE 301,i%
NEXT i%
ON_CLICK 301,Chfont1

END
' ==============================================================================
Chfic:
a$ = FILE_NAME$(16): IF LEN(a$)<4 THEN RETURN
f$ = a$
Dimage(f$): ' -> w%, h%
IF w% > h%
    WIDTH 1,wp%: HEIGHT 1,wp%*h%/w%
    IF HEIGHT(1) > hp% THEN HEIGHT 1,hp%: WIDTH 1,hp%*w%/h%
ELSE
    HEIGHT 1,hp%: WIDTH 1,hp%*w%/h%
    IF WIDTH(1) > wp% THEN WIDTH 1,wp%: HEIGHT 1,wp%*h%/w%
END_IF
WIDTH 2,WIDTH(1): HEIGHT 2,HEIGHT(1)
STRETCH_ON 1: STRETCH_ON 2
FILE_LOAD 1,f$
CAPTION 0, cpt$ + f$ + "  ( " + STR$(w%)+" x " + STR$(h%)+" )"
RETURN
' ==============================================================================
Reinit:
' Réinitialiser toutes les options
a$ = ""
FOR j% = 21 TO 96 STEP 5: POSITION j%,0: NEXT j%
POSITION 31,100: TEXT 32,"1.00": ' gamma
MARK_OFF 100
FOR j% = 110 TO 118: MARK_OFF j%: NEXT j%
MARK_OFF 150: MARK_OFF 160: MARK_OFF 170: MARK_OFF 181: MARK_OFF 185
TEXT 10,""
RETURN
' ==============================================================================
Trk21:
TEXT 22,STR$(POSITION(21)): RETURN
Trk26:
TEXT 27,STR$(POSITION(26)): RETURN
Trk31:
TEXT 32,STR$(POSITION(31)/100): RETURN
Trk36:
TEXT 37,STR$(POSITION(36)): RETURN
Trk41:
TEXT 42,STR$(POSITION(41)): RETURN
Trk46:
TEXT 47,STR$(POSITION(46)): RETURN
Trk51:
TEXT 52,STR$(POSITION(51)): RETURN
Trk56:
TEXT 57,STR$(POSITION(56)): RETURN
Trk61:
TEXT 62,STR$(POSITION(61)): RETURN
Trk66:
TEXT 67,STR$(POSITION(66)): RETURN
Trk71:
TEXT 72,STR$(POSITION(71)): RETURN
Trk76:
TEXT 77,STR$(POSITION(76)): RETURN
Trk81:
TEXT 82,STR$(POSITION(81)): RETURN
Trk86:
TEXT 87,STR$(POSITION(86)): RETURN
Trk91:
TEXT 92,STR$(POSITION(91)): RETURN
Trk96:
TEXT 97,STR$(POSITION(96)): RETURN
Trk101:
TEXT 102,STR$(POSITION(101)): RETURN
Trk106:
TEXT 107,STR$(POSITION(106)): RETURN
' ==============================================================================
Chfont:
SHOW 300
RETURN
Chfont1:
TEXT 175,ITEM_INDEX$(301)
HIDE 300
RETURN
' ==============================================================================
Exec:
arg$=RTRIM$(TEXT$(10)): IF LEN(arg$)<3 THEN arg$ = ""
IF VAL(TEXT$(77))<2 THEN TEXT 77,"0": ' 2...256
FOR i% = 21 TO 96 STEP 5
    SELECT i%
        CASE 21: ' luminosité
            a$ = TEXT$(22)
            IF a$<>"0" THEN arg$=arg$+" -brightness "+a$
        CASE 26: ' contraste
            a$ = TEXT$(27)
            IF a$<>"0" THEN arg$=arg$+" -contrast "+a$
        CASE 31: ' gamma
            a$ = TEXT$(32)
            IF a$<>"1.00" THEN arg$=arg$+" -gamma "+a$
        CASE 36: ' netteté
            a$ = TEXT$(37)
            IF a$<>"0" THEN arg$=arg$+" -sharpen "+a$
        CASE 41: ' adoucir
            a$ = TEXT$(42)
            IF a$<>"0" THEN arg$=arg$+" -soften "+a$
        CASE 46: ' flou
            a$ = TEXT$(47)
            IF a$<>"0" THEN arg$=arg$+" -blur "+a$
        CASE 51: ' rotation (degrés)
            a$ = TEXT$(52)
            IF a$<>"0" THEN arg$=arg$+" -rotate "+a$
        CASE 56: ' détection des bords
            a$ = TEXT$(57)
            IF a$<>"0" THEN arg$=arg$+" -eedge "+a$
        CASE 61: ' effet loupe
            a$ = TEXT$(62)
            IF a$<>"0" THEN arg$=arg$+" -lens "+a$
        CASE 66: ' mosaïque
            a$ = TEXT$(67)
            IF a$<>"0" THEN arg$=arg$+" -mosaic "+a$
        CASE 71: ' effet huile
            a$ = TEXT$(72)
            IF a$<>"0" THEN arg$=arg$+" -oil "+a$
        CASE 76: ' postériser (coloriage)
            a$ = TEXT$(77)
            IF VAL(a$)>1 THEN arg$=arg$+" -posterize "+a$
        CASE 81: ' solariser
            a$ = TEXT$(82)
            IF a$<>"0" THEN arg$=arg$+"-solarize "+a$
        CASE 86: ' conversion sépia
            a$ = TEXT$(87)
            IF a$<>"0" THEN arg$=arg$+" -sepia "+a$
        CASE 91: ' effet verre dépoli
            a$ = TEXT$(92)
            IF a$<>"0" THEN arg$=arg$+" -spread "+a$
        CASE 96: ' effet tourbillon circulaire
            a$ = TEXT$(97)
            IF a$<>"0" THEN arg$=arg$+" -swirl "+a$
    END_SELECT
NEXT i%
FOR i% = 110 TO 118
    SELECT i%
        CASE 110: ' accentuation détails
            IF CHECKED(110)=1 THEN arg$=arg$+" -edetail"
        CASE 111: ' métal repoussé
            IF CHECKED(111)=1 THEN arg$=arg$+" -emboss"
        CASE 112: ' equalize
            IF CHECKED(112)=1 THEN arg$=arg$+" -equalize"
        CASE 113: ' Restore focus
            IF CHECKED(113)=1 THEN arg$=arg$+" -frestore"
        CASE 114: ' correction logarithmique couleurs
            IF CHECKED(114)=1 THEN arg$=arg$+" -log"
        CASE 115: ' négatif
            IF CHECKED(115)=1 THEN arg$=arg$+" -negate"
        CASE 116: ' réduction bruit
            IF CHECKED(116)=1 THEN arg$=arg$+" -noise reduce"
        CASE 117: ' symétrie H
            IF CHECKED(117)=1 THEN arg$=arg$+" -xflip"
        CASE 118: ' symétrie V
            IF CHECKED(118)=1 THEN arg$=arg$+" -yflip"
    END_SELECT
NEXT i%
IF CHECKED(100) = 1: ' conversion en niveaux de gris
    IF CHECKED(102)=1 THEN a$="256"
    IF CHECKED(103)=1 THEN a$="216"
    IF CHECKED(104)=1 THEN a$="128"
    IF CHECKED(105)=1 THEN a$="64"
    IF CHECKED(106)=1 THEN a$="32"
    IF CHECKED(107)=1 THEN a$="16"
    IF CHECKED(108)=1 THEN a$="8"
    arg$=arg$+" -grey "+a$
END_IF
IF CHECKED(150) = 1: ' redimensionnement
    arg$=arg$+" -resize "+STR$(POSITION(151))+" "+STR$(POSITION(152))
END_IF
IF CHECKED(160) = 1: ' découpage
    arg$=arg$+" -crop "+STR$(POSITION(161))+" "+STR$(POSITION(162))
    arg$=arg$+" "+STR$(POSITION(163))+" "+STR$(POSITION(164))
END_IF
IF CHECKED(170) = 1
    a$ = RTRIM$(TEXT$(171))
    IF a$<>""
        arg$=arg$+" -text_font "+TEXT$(175)+" "+STR$(POSITION(176))
        arg$=arg$+" -text_pos "+STR$(POSITION(173))+" "+STR$(POSITION(174))
        arg$=arg$+" -text_color "+STR$(POSITION(178))+" "+STR$(POSITION(179))+" "+STR$(POSITION(180))
        IF CHECKED(181) = 1: ' couleur de fond
            arg$=arg$+" -text_back "+STR$(POSITION(182))+" "+STR$(POSITION(183))+" "+STR$(POSITION(184))
        END_IF
        IF CHECKED(185) = 1: ' rotation
            arg$=arg$+" -text_rotation "+STR$(POSITION(186))
        END_IF
        arg$=arg$+" -text "+CHR$(34)+a$+CHR$(34): ' chaîne à éditer
    END_IF
END_IF
IF LEN(arg$) < 2 THEN RETURN
TEXT 10, ""
CLEAR 8: ITEM_ADD 8, "Nconvert.exe -out clipboard" + arg$ + " image.jpg"
Nconvert(f$,arg$,"")
CLIPBOARD_PASTE 2: ' résultat
RETURN
' ==============================================================================
Listop:
EXECUTE_WAIT "CMD.exe /C "+nc$ + "-help >" + ftm$
EXECUTE_WAIT "Notepad.exe " + ftm$
FILE_DELETE ftm$
RETURN
' ==============================================================================
Razcom:
TEXT 10,"-"
RETURN
' ==============================================================================
SUB Nconvert(forig$,arg$,fdes$)
' Traitements sur un fichier image forig$
' Résultat dans fdes$, ou dans le clipboard si fdes$ = ""
' Si forig$ = "H": liste des options dans le clipboard
' ------------------------------------------------------------------------------
' Nconvert.exe, gratuit, téléchargeable ici: http://www.xnview.com/fr/nconvert/
' ------------------------------------------------------------------------------
' Options principales de Nconvert.exe, à placer dans arg$
' (Voir toutes les options: taper Nconvert.exe -help en ligne de commande)
' -brightness valeur : luminosité, -100 à 100
' -contrast valeur  : contraste, -100 à 100
' -crop x y w h      : découpage d'une zone
' -edetail          : augmenter les détails
' -emboss            : 'embossage' imitation métal repoussé
' -gamma valeur      : gamma, 0.01 à 5.0
' -grey valeur      : convertir en nuances de gris (256,128,64,32,16,8 ou 4)
' -negate            : inversion en négatif
' -noise reduce      : réduction du bruit
' -replace r g b r g b : remplacer une couleur par une autre
' -resize w h        : redimensionner
' -rotate valeur    : rotation de l'image, en degrés (+ ou -)
' -text chaîne      : insérer la chaîne de caractères, à placer en dernier,
'                      après text_font, text_color, text_back, text_pos, text_rotation
'                      Exemple: -text_font "Arial" 16 -text_color 255 0 0 -text "Le Texte"
' -xflip            : symétrie horizontale
' -yflip            : symétrie verticale
DIM_LOCAL su$, a$, nc$: nc$ = "C:\UTIL\Nconvert.exe "
IF UPPER$(forig$)="H" THEN EXECUTE_WAIT "CMD.exe /C "+nc$+" -help | clip": EXIT_SUB
IF fdes$ = ""
    a$ = " -out clipboard": ' pour résultat dans le clipboard
ELSE
    su$ = MID$(FILE_EXTRACT_EXTENSION$(fdes$),2,3): ' sans le '.'
    a$ = " -out "+su$+" -o " + fdes$
END_IF
EXECUTE_WAIT "CMD.exe /C " + nc$ + a$ + " " + arg$ + " " + forig$
END_SUB
' ==============================================================================
SUB Dimage(f$)
' dimensions image f$ -> w%, h%
IF VARIABLE("w%") = 0 THEN DIM w%
IF VARIABLE("h%") = 0 THEN DIM h%
DIM_LOCAL a$, b$, j%, nc$: nc$ = "C:\UTIL\Nconvert.exe "
EXECUTE_WAIT "CMD.exe /C "+nc$+" -info "+f$+" | clip"
a$ = CLIPBOARD_STRING_PASTE$
j% = INSTR(a$,"Width"): b$ = MID$(a$,j%+23,10): j% = INSTR(b$,CHR$(13))
w% = VAL(LEFT$(b$,j%-1))
j% = INSTR(a$,"Height"): b$ = MID$(a$,j%+23,10): j% = INSTR(b$,CHR$(13))
h% = VAL(LEFT$(b$,j%-1))
END_SUB
' ==============================================================================
SUB Edclip()
' Editer le texte du clipboard
FILE_OPEN_WRITE 1,"Z:\Nco.txt": FILE_WRITELN 1,CLIPBOARD_STRING_PASTE$: FILE_CLOSE 1
EXECUTE_WAIT "Notepad.exe Z:\Nco.txt"
END_SUB
' ==============================================================================

A noter que je n'ai pas prévu de sauvegarde du résultat, ce serait facile à ajouter, mais ici le programme a plutôt un but expérimental.

13/7: réinitialisation systématique de la ligne de commande, et affichage systématique de la ligne de commande qui a été exécutée en même temps que le résultat. Ca me paraît plus clair, et ça évite d'empiler involontairement des commandes.
+ choix du fichier image à tester.
+ quelques petits bugs et bricoles esthétiques.


Dernière édition par JL35 le Lun 14 Juil 2014 - 0:17, édité 3 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5551
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Traitement d'images   Dim 13 Juil 2014 - 2:13

Eh bien, je viens de découvrir ce "Traitement d'images" et comme je suis à court d'intervenir (on peut s'exprimer comme ça ? ou ... j'invente ?), je vous donne quand même ce que je peux.

Le voici:
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Traitement d'images   Dim 13 Juil 2014 - 2:26

Je sais bien papydall qu'il y a une interface graphique (GUI) mais mon but c'était de le faire à ma guise à partir d'un programme Panoramic, pour essayer facilement toutes (ou presque...) les options et voir facilement et rapidement le résultat.
Et à partir de là peut-être faire un programme plus élaboré avec seulement les fonctions intéressantes (qui peuvent être différentes pour chacun, c'est à adapter à ses propres besoins).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5858
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Traitement d'images   Dim 13 Juil 2014 - 2:47

C'est bien parti. Ne vous soyez pas surpris si je teste encore moins durant les 2 semaines à venir, je ne serais pas chez moi (vacances) avec accès restreint à l'ordi. En tout cas, j'aime bien la tournure de la version de test de ton GUI pour le programme.
Après comme tu dis comme l'ordre des commandes jouent et qu'il y a pléthore de possibilités, je pense qu'il faudra ajouter quelques commandes préparées et peut être aussi la possibilité de supprimer l'original après traitement (l'option -D) etc ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Traitement d'images   Dim 13 Juil 2014 - 11:39

Sympa Jicehel, du coup avec le boulot que tu me donnes moi je suis obligé d'annuler les miennes, de vacances !

Allez, sans rancune, et bonnes vacances à toi ! (avec un peu plus de soleil qu'ici)  Very Happy

PS petite modif dans le code ci-dessus: affichage de la commande qui est exécutée, choix du fichier image à torturer.

Je précise que certaines options ont un effet un peu bizarre, pour certaines il faut pousser le curseur à fond pour avoir un effet sensible, pour d'autres l'effet semble plus fort avec une petite valeur (par exemple -posterize, avec 2 l'effet est spectaculaire, avec 256 pratiquement nul). Et certaines options ont un effet pas très visible...
D'où l'intérêt de l'expérimentation.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5858
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Traitement d'images   Lun 14 Juil 2014 - 0:43

Après avec l'expérience, on pourra faire des filtres préréglés pour avoir certains effets souhaités Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5953
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Traitement d'images   Lun 14 Juil 2014 - 1:26

Là ce sera autre chose, pour moi actuellement c'est de la mécanique toute simple, après pour ce que tu dis il faudra avoir le sens artistique... mais bon, c'est envisageable.
Sur ce, bonne nuit ! (et bonnes vacances Jicehel, et d'autres aussi probablement)  Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5858
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Traitement d'images   Lun 14 Juil 2014 - 1:45

Merci JL35 Wink Comptes sur moi
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Traitement d'images   

Revenir en haut Aller en bas
 
Traitement d'images
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Traitement d'images
» [Résolu] Affichage images dans un mail
» Insérer des images dans vos sujets.
» Hébergement gratuit images photos fichiers
» Récupérer des images du presse-papier

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: