FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Assemblage d'images Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Assemblage d'images Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Assemblage d'images Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Assemblage d'images Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Assemblage d'images Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Assemblage d'images Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Assemblage d'images Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Assemblage d'images Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Assemblage d'images Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Assemblage d'images Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Assemblage d'images Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Assemblage d'images Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Assemblage d'images Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Assemblage d'images Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Assemblage d'images Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
LEGO Icons 10331 – Le martin-pêcheur
Voir le deal
35 €

 

 Assemblage d'images

Aller en bas 
3 participants
AuteurMessage
JL35




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

Assemblage d'images Empty
MessageSujet: Assemblage d'images   Assemblage d'images EmptyJeu 13 Mar 2014 - 14:59

Pour regrouper plusieurs (jusqu'à 4) images en une seule, horizontalement ou verticalement (genre panorama).
On peut soit laisser leurs dimensions d'origine aux images, soit les redimensionner à la plus grande hauteur (assemblage horizontal) ou largeur (assemblage vertical).
On peut également ajuster l'espacement entre images.
Par exemple (images avec leurs dimensions d'origine, espacement 20 pixels):
Assemblage d'images I111
ou (images redimensionnées: bouton 'Égaliser')
Assemblage d'images I211
(pour les curieux, les deux premières sont des tableaux de Gustave Caillebotte (1848-1894), la troisième c'est moi en vacances mais je n'arrive pas à me rappeler où, en tout cas il y avait du soleil.
Code:
LABEL Chf, Svf, Apercu, Exec, Egal
DIM a$, f$(10), wi%, hi%, w%(10), h%(10), wt%, ht%, i%, j%, sens%, nbi%, ecart%
DIM wa%, ha%, x1%, y1%, x2%, y2%, i1%, i2%, i3%, i4%, rap, tmp$, res%
DIM xp%,yp%,p%(10)

WIDTH 0,916: HEIGHT 0,970: COLOR 0,164,255,255: FONT_BOLD 0: BORDER_SMALL 0
CAPTION 0, "  -  ASSEMBLAGE  D' IMAGES  -"
i%=10
ALPHA i%: TOP i%,10: LEFT i%,5: CAPTION i%," Image 1: ": COLOR i%,255,255,0
EDIT i%+1: TOP i%+1,TOP(i%)-5: LEFT i%+1,60: WIDTH i%+1,430: ON_CLICK i%+1,Chf
ALPHA i%+2: TOP i%+2,TOP(i%): LEFT i%+2,LEFT(i%+1)+WIDTH(i%+1)+5
i% = 13
ALPHA i%: TOP i%,TOP(i%-1)+25: LEFT i%,5: CAPTION i%," Image 2: ": COLOR i%,255,255,0
EDIT i%+1: TOP i%+1,TOP(i%)-5: LEFT i%+1,60: WIDTH i%+1,430: ON_CLICK i%+1,Chf
ALPHA i%+2: TOP i%+2,TOP(i%): LEFT i%+2,LEFT(i%+1)+WIDTH(i%+1)+5
i% = 16
ALPHA i%: TOP i%,TOP(i%-1)+25: LEFT i%,5: CAPTION i%," Image 3: ": COLOR i%,255,255,0
EDIT i%+1: TOP i%+1,TOP(i%)-5: LEFT i%+1,60: WIDTH i%+1,430: ON_CLICK i%+1,Chf
ALPHA i%+2: TOP i%+2,TOP(i%): LEFT i%+2,LEFT(i%+1)+WIDTH(i%+1)+5
i% = 19
ALPHA i%: TOP i%,TOP(i%-1)+25: LEFT i%,5: CAPTION i%," Image 4: ": COLOR i%,255,255,0
EDIT i%+1: TOP i%+1,TOP(i%)-5: LEFT i%+1,60: WIDTH i%+1,430: ON_CLICK i%+1,Chf
ALPHA i%+2: TOP i%+2,TOP(i%): LEFT i%+2,LEFT(i%+1)+WIDTH(i%+1)+5

i% = 22
ALPHA i%: TOP i%,TOP(i%-1)+25: LEFT i%,5: CAPTION i%," Sauvegarder sous: ": COLOR i%,255,255,0
EDIT i%+1: TOP i%+1,TOP(i%)-5: LEFT i%+1,120: WIDTH i%+1,370: ON_CLICK i%+1,Svf
ALPHA i%+2: TOP i%+2,TOP(i%): LEFT i%+2,LEFT(i%+1)+WIDTH(i%+1)+5

BUTTON 26: TOP 26,5: LEFT 26,LEFT(12)+80: WIDTH 26,70: HEIGHT 26,100
CAPTION 26,"<- Égaliser": ON_CLICK 26,Egal

CONTAINER_OPTION 30: TOP 30,5: LEFT 30,WIDTH(11)+260: WIDTH 30,180: HEIGHT 30,40
CAPTION 30,"Assemblage:": COLOR 30,255,255,190
OPTION 31: PARENT 31,30: TOP 31,15: LEFT 31,10: WIDTH 31,80: CAPTION 31,"Horizontal"
OPTION 32: PARENT 32,30: TOP 32,TOP(31): LEFT 32,100: WIDTH 32,80: CAPTION 32,"Vertical"
MARK_ON 31
ALPHA 35: TOP 35,60: LEFT 35,LEFT(30): CAPTION 35," Espacement:              pixels"
COLOR 35,255,255,0
SPIN 36: TOP 36,TOP(35)-3: LEFT 36,LEFT(35)+80: WIDTH 36,50
BUTTON 40: TOP 40,90: LEFT 40,LEFT(35): CAPTION 40,"Aperçu": ON_CLICK 40,Apercu
BUTTON 41: TOP 41,TOP(40): LEFT 41,LEFT(40)+80: CAPTION 41,"Exec": ON_CLICK 41,Exec

xp% = 0: yp% = 134
PICTURE 60: TOP 60,yp%: LEFT 60,xp%: WIDTH 60,900: HEIGHT 60,800
2D_TARGET_IS 60: 2D_FILL_COLOR 0,0,0: 2D_FILL_DIAGONAL_UP: 2D_RECTANGLE 0,0,WIDTH(60),HEIGHT(60)
PICTURE 61: TOP 61,-5000: HIDE 61: ' pour l'image résultat
PICTURE 62: LEFT 62,-5000: HIDE 62: ' picture de stockage auxiliaire
IMAGE 63
p%(1) = 80: PICTURE p%(1): TOP p%(1),TOP(60): HIDE p%(1): STRETCH_ON p%(1)
FOR i% = 2 TO 4
    p%(i%) = p%(i%-1)+1: PICTURE p%(i%): TOP p%(i%),TOP(60): HIDE p%(i%)
    STRETCH_ON p%(i%)
NEXT i%: ' pictures réservés

OPEN_DIALOG 100
SAVE_DIALOG 101

DLL_ON "C:\PANORAMIC\KLAUS\DLLs\KGF.dll"
tmp$ = "Z:\": ' répertoire de travail temporaire

END
' ==============================================================================
Chf:
a$ = FILE_NAME$(100): IF LEN(a$)<4 THEN RETURN
i% = DLL_CALL3("AnalyzeImageFile",ADR(a$),ADR(wi%),ADR(hi%))
j% = NUMBER_CLICK
i% = INT(j%/4)-1: ' n° d'image
f$(i%) = a$: w%(i%) = wi%: h%(i%) = hi%
TEXT j%,a$: CAPTION j%+1,STR$(wi%)+" x " + STR$(hi%)
nbi% = 0
FOR i% = 1 TO 4
    IF FILE_EXISTS(f$(i%)) = 1 THEN nbi% = nbi%+1
NEXT i%
RETURN
' ==============================================================================
Svf:
a$ = FILE_NAME$(101): IF LEN(a$)<4 THEN RETURN
TEXT 23,a$
CLIPBOARD_COPY 61: i% = DLL_CALL1("SaveAnyImageFile",ADR(a$))
RETURN
' ==============================================================================
Apercu:
IF f$(1) = "" OR f$(2) = "" THEN MESSAGE "Manque au moins un fichier image !": RETURN
nbi% = 0
FOR i% = 11 TO 20 STEP 3
    a$ = TEXT$(i%)
    IF FILE_EXISTS(a$) = 1 THEN nbi% = nbi%+1
NEXT i%
sens% = 0: IF CHECKED(32) = 1 THEN sens% = 1
' dimensions totales
wt% = 0: ht% = 0
ecart% = POSITION(36)
IF sens% = 0
    FOR i% = 1 TO nbi%
        wt% = wt% + w%(i%) + ecart%
        IF h%(i%) > ht% THEN ht% = h%(i%)
    NEXT i%
    wt% = wt% - ecart%
ELSE
    FOR i% = 1 TO nbi%
        ht% = ht% + h%(i%) + ecart%
        IF w%(i%) > wt% THEN wt% = w%(i%)
    NEXT i%
    ht% = ht% - ecart%
END_IF
CAPTION 24, STR$(wt%) + " x " + STR$(ht%)
FOR i% = 1 TO 4: HIDE p%(i%): NEXT i%
2D_TARGET_IS 60: 2D_FILL_COLOR 0,0,0: 2D_FILL_DIAGONAL_UP
2D_RECTANGLE 0,0,WIDTH(60),HEIGHT(60)
IF wt% > ht%
    wa% = WIDTH(60): ha% = wa%*ht%/wt%: rap = wa%/wt%
    2D_FILL_COLOR 255,255,255: 2D_PEN_COLOR 192,192,192
    2D_RECTANGLE 0,0,wa%,ha%: ' fond d'image résultante
    x1% = 0: y1% = 0: x2% = w%(1)*wa%/wt%: y2% = h%(1)*rap: ' image 1
    TOP p%(1),TOP(60)+y1%: LEFT p%(1),x1%: WIDTH p%(1),x2%: HEIGHT p%(1),y2%
    FILE_LOAD p%(1),f$(1): SHOW p%(1)
    FOR i% = 2 TO nbi%
        x1% = x2%+ecart%*rap: y1% = 0: x2% = x1%+w%(i%)*rap: y2% = h%(i%)*rap
        TOP p%(i%),TOP(60)+y1%: LEFT p%(i%),x1%: WIDTH p%(i%),w%(i%)*rap
        HEIGHT p%(i%),h%(i%)*rap
        FILE_LOAD p%(i%),f$(i%): SHOW p%(i%)
    NEXT i%
ELSE
    ha% = HEIGHT(60): wa% = ha%*wt%/ht% : rap = ha%/ht%
    2D_FILL_COLOR 255,255,255: 2D_PEN_COLOR 192,192,192
    2D_RECTANGLE 0,0,wa%,ha%: ' fond d'image résultante
    x1% = 0: y1% = 0: x2% = w%(1)*ha%/ht%: y2% = h%(1)*rap: ' image 1
    TOP p%(1),TOP(60)+y1%: LEFT p%(1),x1%: WIDTH p%(1),x2%: HEIGHT p%(1),y2%
    FILE_LOAD p%(1),f$(1): SHOW p%(1)
    FOR i% = 2 TO nbi%
        x1% = 0: y1% = y2%+ecart%*rap: x2% = w%(i%)*rap: y2% = y1%+h%(i%)*rap
        TOP p%(i%),TOP(60)+y1%: LEFT p%(i%),x1%: WIDTH p%(i%),w%(i%)*rap
        HEIGHT p%(i%),h%(i%)*rap
        FILE_LOAD p%(i%),f$(i%): SHOW p%(i%)
    NEXT i%
END_IF
RETURN
' ==============================================================================
Exec:
IF wt% = 0 OR ht% = 0
    GOSUB Apercu
    IF wt% = 0 OR ht% = 0 THEN RETURN
END_IF
WIDTH 61,wt%: HEIGHT 61,ht%

a$ = f$(1)
i% = DLL_CALL1("LoadAnyImageFile",ADR(a$)): ' -> clipboard
WIDTH 62,w%(1): HEIGHT 62,h%(1)
2D_TARGET_IS 62
CLIPBOARD_PASTE 62: 2D_IMAGE_COPY 63,0,0,w%(1),h%(1)
x1% = 0: y1% = 0
2D_TARGET_IS 61: 2D_IMAGE_PASTE 63,x1%,y1%: ' mise en place de l'image 1

FOR i% = 2 TO nbi%
    a$ = f$(i%)
    j% = DLL_CALL1("LoadAnyImageFile",ADR(a$)): ' -> clipboard
    WIDTH 62,w%(i%): HEIGHT 62,h%(i%)
    2D_TARGET_IS 62
    CLIPBOARD_PASTE 62: 2D_IMAGE_COPY 63,0,0,w%(i%),h%(i%)
    2D_TARGET_IS 61
    IF sens% = 0
        x1% = x1%+w%(i%-1)+ecart%: y1% = 0
    ELSE
        x1% = 0: y1% = y1%+h%(i%-1)+ecart%
    END_IF
    2D_IMAGE_PASTE 63,x1%,y1%: ' mise en place de l'image suivante
NEXT i%
CLIPBOARD_COPY 61
RETURN
' ==============================================================================
Egal:
j% = 0
IF sens% = 0
    ' égaliser les hauteurs
    FOR i% = 1 TO nbi%
        IF h%(i%) > j% THEN j% = h%(i%)
    NEXT i%
    FOR i% = 1 TO nbi%
        IF h%(i%) < j%
            a$ = f$(i%)
            res% = DLL_CALL1("LoadAnyImageFile",ADR(a$)): ' image -> clipboard
            ha% = j%: wa% = ha%*w%(i%)/h%(i%): ' redim proportionnel
            a$ = tmp$ + "Image"+STR$(i%)+".jpg"
            res% = DLL_CALL2("ResizePicture",wa%,ha%)
            res% = DLL_CALL1("SaveAnyImageFile",ADR(a$))
            f$(i%) = a$: w%(i%) = wa%: h%(i%) = ha%
            CAPTION 9+3*i%,STR$(wa%)+" x " + STR$(ha%)
        END_IF
    NEXT i%
ELSE
    ' égaliser les largeurs
    FOR i% = 1 TO nbi%
        IF w%(i%) > j% THEN j% = w%(i%)
    NEXT i%
    FOR i% = 1 TO nbi%
        IF w%(i%) <  j%
            a$ = f$(i%)
            res% = DLL_CALL1("LoadAnyImageFile",ADR(a$)): ' image -> clipboard
            wa% = j%: ha% = wa%*h%(i%)/w%(i%)
            a$ = tmp$ + "Image"+STR$(i%)+".jpg"
            res% = DLL_CALL2("ResizePicture",wa%,ha%)
            res% = DLL_CALL1("SaveAnyImageFile",ADR(a$))
            f$(i%) = a$: w%(i%) = wa%: h%(i%) = ha%
            CAPTION 9+3*i%,STR$(wa%)+" x " + STR$(ha%)
        END_IF
    NEXT i%
END_IF
RETURN
' ==============================================================================
Comme on peut le voir, je fais largement appel à KGF.dll dont les fonctions traitement d'images sont bien pratiques (merci Klaus).
A ajuster, le chemin de KGF.dll et le répertoire de manoeuvre (tmp$).

On peut enregistrer l'image résultante ('Sauvegarder sous...'), mais je précise qu'elle est systématiquement copiée dans le presse-papier.
Revenir en haut Aller en bas
papydall

papydall


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

Assemblage d'images Empty
MessageSujet: Re: Assemblage d'images   Assemblage d'images EmptyJeu 13 Mar 2014 - 18:12

JL35 a écrit:
la troisième c'est moi en vacances mais je n'arrive pas à me rappeler où, en tout cas il y avait du soleil.

J’avais cru, l’espace d’une seconde, que c’était au Sahara.
Mais comme tu as écrit qu'il y avait du soleil, alors ce n'est pas le lieu!

Assemblage d'images Images15

En tout cas, merci pour le partage.  Laughing
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




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

Assemblage d'images Empty
MessageSujet: Re: Assemblage d'images   Assemblage d'images EmptyVen 14 Mar 2014 - 17:28

C'est vrai, c'est bien connu qu'au Sahara il flotte tout le temps ! pourtant il y a de belles plages de sable, dommage.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Assemblage d'images Empty
MessageSujet: Re: Assemblage d'images   Assemblage d'images EmptyVen 14 Mar 2014 - 21:56

La plage est belle et spacieuse mais la mer est loin ...
Revenir en haut Aller en bas
Contenu sponsorisé





Assemblage d'images Empty
MessageSujet: Re: Assemblage d'images   Assemblage d'images Empty

Revenir en haut Aller en bas
 
Assemblage d'images
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Petit programme d'assemblage d'un fichier découpé.

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: