Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Un agrandisseur | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Un agrandisseur Ven 14 Mar 2014 - 17:11 | |
| Ou plutôt une loupe, pour voir en détail les pixels d'une zone de l'écran (une icône, une portion d'image, du texte etc.) On sélectionne à la souris la zone à analyser, qui s'affiche grandeur nature dans un picture, et agrandie (ici 8 fois, mais c'est modulable) avec les pixels séparés dans un autre picture. Ensuite, en cliquant sur un pixel (agrandi), on obtient sa position relative et ses composantes de couleurs. Il faut disposer de IrfanView, pour la capture. La zone à capturer peut être quelconque, mais c'est plutôt prévu pour des zones de quelques dizaines de pixels, genre une icône. Avec le facteur multiplicateur, ça devient vite envahissant ! Usage: cliquer le bouton 'Capturer', une croix apparaît au centre de l'écran, on la déplace à la souris sur le coin haut gauche de la capture, on clique, puis on re-clique sur le coin bas droit pour sélectionner. Le programme ne fait qu'une soixantaine de lignes: - Code:
-
' Agrandir une zone de l'écran pour voir sa structure LABEL Capt, Pixel DIM iv$,x0%,y0%,r%,g%,b%,x1%,y1%,res%,xs%,ys%,f$,w%,h%,mult%,a$ f$ = "C:\Temp\ima.bmp" iv$ = "C:\Progra~2\Irfanv~1\i_view32.exe " mult% = 8: ' facteur de grossissement
WIDTH 0,60: HEIGHT 0,70: BORDER_SMALL 0: font_bold 0: CAPTION 0,"Capture" BUTTON 1: HEIGHT 1,20: CAPTION 1,"Capturer": ON_CLICK 1,Capt PICTURE 20: TOP 20,20: LEFT 20,0 2D_TARGET_IS 20: CLS: CLIPBOARD_COPY 20 PICTURE 30 ALPHA 5: TOP 5,10: LEFT 5,WIDTH(20)+20: FONT_SIZE 5,12: ON_CLICK 30,Pixel ALPHA 6: TOP 6,35: LEFT 6,LEFT(5): FONT_SIZE 6,12 END ' ============================================================================== Capt: IF FILE_EXISTS(f$) = 1 THEN FILE_DELETE f$ EXECUTE_WAIT iv$ + "/capture=4 /convert="+f$ DimBmp(f$) WIDTH 20,w%: HEIGHT 20,h%: LEFT 5,WIDTH(20)+40: LEFT 6,LEFT(5) CAPTION 5,"Capture = "+STR$(w%)+" x " + STR$(h%) TOP 30,h%+25: WIDTH 30,mult%*w%: HEIGHT 30,mult%*h% WIDTH 0,950: HEIGHT 0,950 FILE_LOAD 20, f$ 2D_TARGET_IS 30: CLS FOR y0% = 0 TO HEIGHT(20) FOR x0% = 0 TO WIDTH(20) r%=COLOR_PIXEL_RED(20,x0%,y0%) g%=COLOR_PIXEL_GREEN(20,x0%,y0%) b%=COLOR_PIXEL_BLUE(20,x0%,y0%) x1%=x0%*mult%: y1% = y0%*mult% 2D_PEN_COLOR r%,g%,b%: 2D_FILL_COLOR r%,g%,b% 2D_RECTANGLE x1%,y1%,x1%+mult%-1,y1%+mult%-1 NEXT x0% display NEXT y0% CAPTION 6,"Clic un pixel pour position et couleur" RETURN ' ============================================================================== Pixel: x0% = MOUSE_X_LEFT_DOWN(30): y0% = MOUSE_Y_LEFT_DOWN(30) r%=COLOR_PIXEL_RED(30,x0%,y0%) g%=COLOR_PIXEL_GREEN(30,x0%,y0%) b%=COLOR_PIXEL_BLUE(30,x0%,y0%) x0% = INT(x0%/mult%): y0% = INT(y0%/mult%) a$ = "x="+STR$(x0%)+" y="+STR$(y0%)+CHR$(10)+"R="+STR$(r%)+" G="+STR$(g%)+" B="+STR$(b%) CAPTION 6,a$ RETURN ' ============================================================================== SUB DimBmp(f$) ' Dimensions d'une image bmp -> w%, h% (largeur, hauteur en pixels) DIM_LOCAL v%(8) IF VARIABLE("w%") = 0 THEN DIM w% IF VARIABLE("h%") = 0 THEN DIM h% FILEBIN_OPEN_READ 9, f$ FILEBIN_POSITION 9, 18: FILEBIN_BLOCK_READ 9,8,v%(0) w% = v%(0)+256*v%(1)+65536*v%(2)+16777216*v%(3) h% = v%(4)+256*v%(5)+65536*v%(6)+16777216*v%(7) FILEBIN_CLOSE 9 END_SUB ' ============================================================================== | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Un agrandisseur Ven 14 Mar 2014 - 20:40 | |
| salut un magnifique programme Je viens de le tester Je vais l’étudier en profondeur et surement y trouver quelques astuces qui me permettront de finaliser celui sur lequel je travaille Qui disait que c’était calme sur le forum En secret se préparent des choses nouvelles Vous connaissez:" Mars qui rit malgre les averses ,prépare en secret le printemps" De Panoramic bien sur , | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un agrandisseur Ven 14 Mar 2014 - 21:55 | |
| Joli, j'avais fais une loupe aussi dans un éditeur de sprites, mais je ne sais même plus si je l'avais publié quand je travaillais sur mon Barbarian... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un agrandisseur Ven 14 Mar 2014 - 22:43 | |
| Merci à tous les deux, mais ce n'est pas bien compliqué, c'était histoire d'entretenir la flamme (et non pas la flemme). | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Un agrandisseur Sam 15 Mar 2014 - 18:15 | |
| Salut Je ne parviens pas à retrouver comment tu as procédè pour créer la mire de sélection . Je trouve que c'est original . Pourrais-tu me mettre sur la voie | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Sam 15 Mar 2014 - 18:56 | |
| C'est bizarre, je ne comprends pas pourquoi ça ne marche pas chez moi. l'ordinateur me dit qu'il y a une erreur à la ligne 19 et qu'il ne trouve pas "C:\Progra~2\Irfanv~1\i_view32.exe " et pourtant, i_view32.exe est bien à cet endroit. Bizarre, bizarre... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un agrandisseur Sam 15 Mar 2014 - 19:19 | |
| Reconstruis le nom court chez toi. Il n'est peut-être pas le même que sur le système d'où vient le source. Ca m'a déjà fait ça. En effet, le com court dépend largement du contenu des différents dossiers. | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Un agrandisseur Sam 15 Mar 2014 - 20:02 | |
| Salut J'ai parfois ce pb
le chemin chez moi , par exemple est: " C:\Progra~1\Irfanv~1\i_view32.exe " Faire aussi attention au " qui nos joue de tours Un utilitaire :DOsname m'a souvent bien rendu service | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un agrandisseur Sam 15 Mar 2014 - 20:50 | |
| Bonsoir (j'étais absent), C'est vrai que le mieux est de recalculer le nom court à partir du chemin complet (sous xp IrfanView est sous Program Files, sous w7 Program files (x86)), il y a des subs pour ça, mais j'ai voulu faire court, mais on a ça par exemple, tout simple, avec le résultat dans le presse-papier: - Code:
-
SUB FileShort(f$) ' Chemin court fichier f$ -> clipboard DIM_LOCAL fb$: fb$ = "C:\Temp\Carfich.bat" FILE_OPEN_WRITE 9,fb$ FILE_WRITELN 9, "@echo off" FILE_WRITELN 9, "FOR %%? IN ("+CHR$(34)+f$+CHR$(34)+") DO ECHO %%~sf? | clip" FILE_CLOSE 9 EXECUTE_WAIT fb$: FILE_DELETE fb$ END_SUB Il suffit de mettre en tête le chemin complet, qui est pour moi: - Code:
-
fiv$ = "C:\Program Files (x86)\IrfanView\i_view32.exe" et de rajouter juste avant l'Execute_Wait iv$: - Code:
-
FileShort(fiv$): iv$ = CLIPBOARD_STRING_PASTE$ et ne pas oublier de rajouter un espace dans les paramètres, avant le /capture <- c'est inutile finalement, la chaîne rendue se termine par un caractère 10 (linefeed) qui fait l'affaire comme séparateur. @jjn4 s'il ne le trouve pas, c'est que ton chemin court n'est pas bon (probablement Progra~1 au lieu de Progra~2 chez moi), mais le mieux est de le faire calculer par la bécane... @sergeauze, Il n'y a aucune difficulté ni astuce cachée, j'analyse l'image d'origine pixel par pixel, du haut en bas et de gauche à droite, je récupère la couleur du pixel lu, et je crée un petit carré de la même couleur dans l'image finale (ici 7x7 pixels pour un grossissement de 8 ), en laissant un pixel vide pour faire la séparation avec le suivant, chaque emplacement du carré destinataire étant séparé de 8 pixels du précédent, en largeur et en hauteur. Il faut d'abord dimensionner le picture destinataire en fonction des dimensions de l'image d'origine (ici 8 fois plus grand pour un grossissement de 8 ). | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: ??? Sam 15 Mar 2014 - 21:36 | |
| | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un agrandisseur Sam 15 Mar 2014 - 21:41 | |
| Progra~1 est l'abréviation de 'Program Files' (emplacement des programmes sous Windows Vista et précédents) Progra~2 est l'abréviation de 'Program Files (x86)' (emplacement des programmes sous Windows 7, et suivants je suppose) Ces abréviations sont celles qui sont données par le système dans les noms courts de chemins;
Remarque: sous Windows 7 j'ai les deux: Program Files, et Program Files (x86), les programmes qui étaient installés auparavant dans Program Files (sous XP) sont installés maintenant dans Program Files (x86)... c'est comme ça sous W7... simple, non ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Un agrandisseur Dim 16 Mar 2014 - 1:23 | |
| La construction d'un nom court est légèrement plus complexe que ç&. Et c'est bien pour ça qu'il y a des fonctions Microsoft qui le font, et toute une série de codes en différents lengages qui essaient de simuler leur comportement, à défaut de le reproduire avec exactitude. Bien sûr, dans le cas de "Program Files", ton explication semble pertinente. Mais, pour la découverte, essaie de rajouter un dossier "Program Files bis", puis demande au système de te donner les noms courts de ces 3 dossiers... Pour faire court, le chiffre après le signe "~" représente le numéro d'ordre dans lequel on trouve le dossier concerné dans le dossier parent, avec les 6 premier caractères étant identiques. Et encore - s'il y a plus de 9 dossiers (ou fichiers) dans le dossier parent dont les 6 premiers caractères sont identiques, on a un nombre de 2 chiffres après la tilde, et forcément une prise en compte des 5 premiers caractères pour regrouper tout cela, ce qui change tout à nouveau. Mais ce n'est pas tout, malheureusement. Car sous XP, Vista, Seven etc, on peut utiliser des caractères dans les noms de fichiers qu'on ne pouvait pas utiliser sous MS-DOS ! Et donc, tous ces caractères sont éliminés du nom court, et ce mécanisme change également le calcul du nombre placé après la tilde. Pour comprendre, créez, dans un même dossier, les fichiers: - Citation :
aaaaa.dat aaaaaa.dat aaaaaaa.dat aaaaa_a.dat aaaa_aa.dat aaaaa-a.dat aaaa-aa.dat aaaa-_a.dat puis calculez le nom court de tout ça. Vous serez surpris du résultat. Et pire: cela ne dépend non seulement du nom lui-même et de sa position dans le fichier (qui d'ailleurs n'est pas nécessairement lié à l'ordre alphabétique ou ASCII !). Cela dépend également du moment de création du fichier. Car enfin, on ne va pas changer le nom court d'un fichier existant, sous prétexte de créer un autre fichier dont les 6 premier caractères seraient identiques ! Dans l'exemple ci-dessus, le résultat n'est pas le même si vous créez ces fichiers dans un ordre différent ! Donc, mon conseil, réitéré avec insistance, est de ne jamais reprendre un nom court par copier/coller d'un autre dossier en essayant de changer une partie du nom, de ne jamais prendre un nom court dans un source établi sur une autre machine (via le forum par exemple), mais de toujours reconstruire le nom court dynamiquement, au minimum lors du démarrage du programme si l'on a la certitude que le contenu du dossier parent ne change pas pendant la durée de vie du programme, ou de le reconstruire immédiatement avant chaque utilisation si le dossier parent est appelé à évoluer en cours de vie du programme.
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un agrandisseur Dim 16 Mar 2014 - 9:50 | |
| Bien d'accord avec toi Klaus sur le fait qu'il ne faut pas utiliser le nom court de quelqu'un d'autre, mais le générer systématiquement soi-même (le faire générer par son propre système) avec une sub adéquate. | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Dim 16 Mar 2014 - 14:42 | |
| Merci pour toutes ces explications très instructives. D'ailleurs, ça y est, ça marche. Et c'est vrai que le programme est joli. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un agrandisseur Dim 16 Mar 2014 - 17:35 | |
| Je viens de tester : intéressant. Merci JL35. | |
| | | Contenu sponsorisé
| Sujet: Re: Un agrandisseur | |
| |
| | | | Un agrandisseur | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |