Mai 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 | 31 | | | Calendrier |
|
| | Réduction d'images | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Réduction d'images Lun 29 Avr 2013 - 16:36 | |
| J'ai fait une tentative de réduction d'image en Panoramic pur, mais hélas, ça ne marche pas. Mon idée était de charger l'image dans un picture aux dimensions finales voulues, avec stretch_on, puis de récupérer cette image pixel par pixel (malgré que c'est un peu long): - Code:
-
DIM f$, w%, h%, x%, y%, r%, g%, b%, xa%, ya%
f$ = "C:\Graph\Jpg\Goldgate.jpg": ' image quelconque, de 640x480 WIDTH 0,600: HEIGHT 0,700: COLOR 0,0,255,255 PICTURE 1: TOP 1,10: LEFT 1,10: WIDTH 1,500: HEIGHT 1,350: ' picture résultat PICTURE 9: TOP 9,400: LEFT 9,20: STRETCH_ON 9: ' picture de manoeuvre
w% = 320: h% = 240: ' dimensions de l'image réduite xa% = 30: ya% = 20: ' emplacement de l'image finale WIDTH 9, w%: HEIGHT 9, h% FILE_LOAD 9, f$ 2D_TARGET_IS 1 FOR y% = 0 TO h%-1 FOR x% = 0 TO w%-1 r% = COLOR_PIXEL_RED(9,x%,y%) g% = COLOR_PIXEL_GREEN(9,x%,y%) b% = COLOR_PIXEL_BLUE(9,x%,y%) 2D_PEN_COLOR r%,g%,b%: 2D_POINT xa%+x%,ya%+y% NEXT x% DISPLAY NEXT y% END ... et on ne récupère que le coin supérieur gauche de l'image initiale, autrement dit, malgré le stretch_on, l'image est comprimée mais a gardé ses dimensions et tous ses pixels d'origine. En d'autres termes, le picture qu'on voit à l'écran ne correspond pas à la réalité au point de vue pixels... Si quelqu'un a une idée de génie pour faire ça en Panoramic ? je le fais avec un programme externe, mais c'est moins bien... PS Je poursuis mes investigations: on peut charger l'image d'origine dans un picture invisible, et la réduire en ne prenant qu'un pixel sur 2, ou 3, ou 4... ce n'est peut-être pas très rationnel mais le résultat est satisfaisant dans la plupart des cas (sauf quelques cas rares où on obtient des petits carrés, par une espèce de phénomène de résonance, sans doute, sachant que le rapport de réduction peut être folklorique mais que les pixels eux sont entiers): - Code:
-
LABEL Reduc DIM f$, wi%, hi%, r, w%, h%, x%, y%, xa%, ya%
f$ = "C:\Graph\Jpg\Goldgate.jpg": ' image quelconque, de 640x480 wi% = 640: hi% = 480: ' dimensions de l'image d'origine WIDTH 0,600: HEIGHT 0,500: COLOR 0,0,255,255 PICTURE 1: TOP 1,30: LEFT 1,10: WIDTH 1,570: HEIGHT 1,400: ' picture résultat PICTURE 9: TOP 9,-2000: ' picture de manoeuvre r = 1/2: ' réduction xa% = 30: ya% = 20: ' emplacement de l'image finale dans le Picture 1 print time$ GOSUB Reduc print time$ END ' ------------------------------------------------------------------------ Reduc: w% = r*wi%: h% = r*hi%: ' dimensions de l'image réduite du facteur r WIDTH 9, wi%: HEIGHT 9, hi%: FILE_LOAD 9, f$ 2D_TARGET_IS 1 FOR y% = 0 TO hi%-1 step 1/r FOR x% = 0 TO wi%-1 step 1/r 2D_PEN_COLOR COLOR_PIXEL_RED(9,x%,y%),COLOR_PIXEL_GREEN(9,x%,y%),COLOR_PIXEL_BLUE(9,x%,y%) 2D_POINT xa%+x%*r,ya%+y%*r NEXT x% DISPLAY NEXT y% RETURN Évidemment c'est un peu long (pixel par pixel...) mais c'est expérimental ! moins c'est réduit, plus c'est long (et lycée de Versailles), c'est logique. A titre d'exemple (image jpg de 640x480, facteur de réduction r): r = 3/4: 54 secondes r = 2/3: 14 s avec apparition de trame carrée r = 1/2: 14 s r = 1/3: 7 s r = 1/4: 4 s r = 1/5: 3 s r = 1/10: 1 s | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: Réduction d'images Mer 1 Mai 2013 - 8:20 | |
| | |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Réduction d'images Mer 1 Mai 2013 - 9:20 | |
| Bonjour pascal, et merci d'avoir regardé.
Ce que je cherche à faire, ce n'est pas simplement à agrandir ou réduire une image visuellement, à l'écran, ça c'est très facile à faire avec stretch_on, mais à obtenir une image entièrement nouvelle, enregistrée dans un fichier, avec ses nouvelles dimensions.
Je n'ai pas trop approfondi les exemples que tu donnes, mais il me semble que ce sont des opérations seulement visuelles ? | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Réduction d'images Mer 1 Mai 2013 - 9:30 | |
| Tu peux aussi essayer la fonction - Code:
-
res% = dll_call2("ResizePicture",h%,w%)
de KGF.dll. Elle peut être utilisée directement, c'est-à-dire elle n'utilisa pas l'image interne. Elle agit en fait sur une image chargée dans le presse-papier. Tu pais clipboard_copy d'un picture (invisible peut-être), puis tu appelles cette fonction en lui donnant largeur et hauteur souhaitée, puis tu fais clipboard_paste dans un nouveau pictire définit sans stretch_on, avec les bonnes dimensions. | |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Réduction d'images Mer 1 Mai 2013 - 9:53 | |
| Bonjour Klaus, ça par contre ça m'intéresse, dans la mesure où je charge déjà KGF.dll pour l'impression, je n'avais même pas percuté sur la fonction 'resize', que veux-tu, il y en a tellement qu'il va me falloir un dictionnaire des fonctions, classées par genre ! Je vais regarder de plus près les fonctions graphiques. Merci en tout cas pour le tuyau ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Réduction d'images Mer 1 Mai 2013 - 10:05 | |
| Tu devrais lister les raisons pour lesquelles tu fais encore appel à un programme externe, il ne doit plus manquer grand chose dans la DLL | |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Réduction d'images Mer 1 Mai 2013 - 10:23 | |
| Eh bien... c'est ce que je vais finir par faire ! Et puis après souhaiter que KGF.dll soit intégré à Panoramic ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 51 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Réduction d'images Mer 1 Mai 2013 - 17:32 | |
| Je suis presque d'accord avec toi JL35. Je dis presque par ce que le fait que KGF soit un complément externe permet à Klaus de nous débloquer avec une rapidité fulgurante que Jack ne pourrait pas avoir (il devrait faire des tests d'interaction, de la documentation, etc et n'a pas beaucoup de temps.) Mais je suis d'accord sur le fait que par contre Jack pourrait se servir des fonctions ajoutées comme réservoir d'idées pour intégrer des fonctions et commandes dans Panoramic avec le nombre de paramètres etc... (Voir au besoin pour les sources puisque Klaus les mets à disposition).
| |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Réduction d'images Mer 1 Mai 2013 - 17:48 | |
| Il est évident que sur simple demande, je fournis l'intégralité des sources à Jack. C'est assez gros - à ce jour, ça doit faire près de 15.000 lignes en Delphi. | |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Réduction d'images Mer 1 Mai 2013 - 18:41 | |
| Je plaisantais à moitié quand même, en pensant que c'était un rêve difficilement réalisable.
Je regarde d'un peu plus près les très intéressantes fonctions graphiques de KGF.dll (je me suis sorti sur papier la vingtaine de pages de la doc correspondante, la totalité étant devenue assez énorme).
Je suis un peu perplexe sur la notion d'image interne, si je comprends bien c'est quelque chose d'inaccessible en Panoramic, seulement par l'intermédiaire du clipboard.
Donc, pour utiliser ces fonctions 'image interne', il faut d'abord copier l'image dans le clipboard, puis copier le clipboard dans l'image interne (fonction LoadPicture), exécuter la fonction désirée, puis recopier l'image interne résultat dans le clipboard (fonction SavePicture), puis récupérer le clipboard dans Panoramic par une fonction quelconque (clipboard_paste). Ca me paraît assez complexe, mais est-ce bien ça ?
Une toute petite remarque sémantique: on doit écrire souligné, et non pas sousligné.
Une autre petite remarque: je vois les fonctions Brightness et Gamma, mais pas Contrast, d'habitude les trois vont ensemble... | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Réduction d'images Mer 1 Mai 2013 - 18:50 | |
| Tu as bien compris le principe de traitement.
Le picture Panoramic n'est pas un objet "fenêtré", n'a pas de handle et n'est pas accessible à partir d'une DLL.
Donc, je construis une image interne, invisible, qui est gérée par la DLL, et toutes les transformations ont lieu sur cette image. Tu peux faire plusieurs transformations, l'une après l'autre, sur l'image interne, sans repasser par la récupération via le presse-papier. En fait, la fonction SavePicture vide l'image interne dans le presse-papier et la supprime. La fonction LoadPicture charge l'image interne à partir du presse-papier. Si tu as fait SavePicture, tu dois refaire un LoadPicture après, si tu veux retravailler sir la même image.
Cependant, il y a un mode "immédiat". Ce mode copie automatiquement l'image interne dans le presse-papier, après chaque modification, sans pour autant la supprimer de façon interne. Le programme effets.bas utilise ce mode. Il suffit alors de faire un clipboard_paste après chaque modif pour voir le résultat.
PS.
Je prends note pour sousligné --> souligné, et je vais corriger. Merci. | |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Réduction d'images Mer 1 Mai 2013 - 20:14 | |
| C'est bien ce que j'avais cru comprendre, mais je te remercie de me l'avoir confirmé si clairement, tant qu'à faire autant utiliser ces fonctions intelligemment.
Et maintenant... au travail !
Pour ergoter un peu, j'aurais appelé 'symétrie horizontale', la symétrie qui se fait autour de l'axe vertical, droite<->gauche, et réciproquement 'symétrie verticale' la symétrie autour de l'axe horizontal, haut<->bas. Mais attention, ce que je dis est purement intuitif, pour moi, je ne sais pas quelle est la syntaxe scientifique exacte.
Super toutes ces fonctions, j'y retourne... | |
| | | Contenu sponsorisé
| Sujet: Re: Réduction d'images | |
| |
| | | | Réduction d'images | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |