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
» Gestionnaire de Projets Panoramic
par Minibug Aujourd'hui à 2:10

» Mah-Jong européen new-look
par jjn4 Hier à 16:35

» Button_picture
par pascal10000 Hier à 11:41

» Pourquoi le compilateur stagne
par Minibug Hier à 11:09

» 4 (en analyse): SYNEDIT_TARGET_IS_OBJECT devient inactif
par Jack Hier à 10:09

» 3 (en analyse): Mauvaise interprétation du string "THEN"
par Jack Hier à 10:03

» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Marc Hier à 10:00

» KGF_dll - nouvelles versions
par pascal10000 Mer 13 Déc 2017 - 17:27

» track_bar circulaire
par Klaus Mar 12 Déc 2017 - 13:54

» API Windows
par Klaus Mar 12 Déc 2017 - 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

» Ecouter la radio fm sur votre pc
par pascal10000 Sam 9 Déc 2017 - 3:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 Bricoler des images

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



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

MessageSujet: Bricoler des images   Jeu 25 Aoû 2016 - 23:40

Pour meubler un peu le silence ambiant...
Deux petites subs qui permettent:

- d'assembler deux images côte à côte en une seule, avec un intervalle éventuel, réglable. Les images peuvent être de tailles différentes, l'ajustage se fera automatiquement sur la plus grande.
Le sens d'assemblage peut être horizontal ou vertical.

- de rogner une partie d'image d'un nombre de pixels donné (en vue d'assemblage ?). Le rognage se fait au choix en haut, en bas, à gauche ou à droite de l'image.

Les images d'origine peuvent être au format BMP ou JPG, l'image résultat sera obligatoirement au format BMP (Panoramic ne sait pas sauvegarder dans un autre format, le code est tout en panoramic).

Code:
DIM f1$,f2$,fr$,e%,n%
f1$ = "C:\TEMP\i1.jpg"
f2$ = "C:\GRAPH\JPG\Goldgate.jpg"
fr$ = "Z:\Result.bmp"
e% = 0
n% = 40
Rogner(f2$,"D",n%,fr$)
' Assemble(f2$,f1$,"V",e%,fr$)
Message "Terminé !"
Terminate
' ==============================================================================
SUB Assemble(f1$,f2$,sens$,e%,fr$)
  ' Assembler deux images f1$ et f2$
  ' horizontalement (sens$="H") ou verticalement (sens$="V")
  ' écart e% pixels
  ' Résultat dans fr$ (image bmp)
  DIM_LOCAL fm$,w1%,h1%,w2%,h2%,w%,h%,x%,y%
  fm$ = "C:\TEMP\Provy.bmp"
  FORM 900: HIDE 900
  PICTURE 901: PARENT 901,900: ' manoeuvre
  PICTURE 902: PARENT 902,900: ' image finale
  IMAGE 903
  FILE_LOAD 901,f1$: FILE_SAVE 901,fm$
  FILEBIN_OPEN_READ 1,fm$: ' dimensions image 1
     FILEBIN_POSITION 1,18: w1% = FILEBIN_READ(1)+256*FILEBIN_READ(1)
     FILEBIN_POSITION 1,22: h1% = FILEBIN_READ(1)+256*FILEBIN_READ(1)
  FILEBIN_CLOSE 1
  FILE_LOAD 901,f2$: FILE_SAVE 901,fm$
  FILEBIN_OPEN_READ 1,fm$: ' dimensions image 2
     FILEBIN_POSITION 1,18: w2% = FILEBIN_READ(1)+256*FILEBIN_READ(1)
     FILEBIN_POSITION 1,22: h2% = FILEBIN_READ(1)+256*FILEBIN_READ(1)
  FILEBIN_CLOSE 1
  FILE_DELETE fm$
  IF sens$ = "H"
      w% = w1%+w2%+e%: h% = MAX(h1%,h2%)
      x% = w1%+e%: y% = 0
  ELSE
      w% = MAX(w1%,w2%): h% = h1%+h2%+e%
      x% = 0: y% = h1%+e%
  END_IF
  WIDTH 902,w%: HEIGHT 902,h%
  FILE_LOAD 901,f1$: CLIPBOARD_COPY 901: CLIPBOARD_PASTE 903
  2D_TARGET_IS 902: 2D_IMAGE_PASTE 903,0,0
  FILE_LOAD 901,f2$: CLIPBOARD_COPY 901: CLIPBOARD_PASTE 903
  2D_TARGET_IS 902: 2D_IMAGE_PASTE 903,x%,y%
  FILE_SAVE 902,fr$
  2D_TARGET_IS 0: DELETE 900: DELETE 903
END_SUB
' ==============================================================================
SUB Rogner(f$,sens$,n%,fr$)
  ' Rogner n% pixels d'une image f$
  ' en haut (sens$="H"), en bas ("B"), à gauche ("G") ou à droite ("D")
  ' Résultat dans fr$ (BMP)
  DIM_LOCAL fm$,w%,h%,x%,y%,wp%,hp%
  fm$ = "C:\TEMP\Provy.bmp"
  FORM 900: HIDE 900
  PICTURE 901: PARENT 901,900
  IMAGE 902
  FILE_LOAD 901,f$: FILE_SAVE 901,fm$
  FILEBIN_OPEN_READ 1,fm$: ' dimensions de l'image
     FILEBIN_POSITION 1,18: w% = FILEBIN_READ(1)+256*FILEBIN_READ(1)
     FILEBIN_POSITION 1,22: h% = FILEBIN_READ(1)+256*FILEBIN_READ(1)
  FILEBIN_CLOSE 1
  2D_TARGET_IS 901
  IF sens$ = "H": ' rogner en haut
      2D_IMAGE_COPY 902,0,n%,w%,h%: wp% = w%: hp% = h%-n%
  ELSE
      IF sens$ = "B": ' rogner en bas
          2D_IMAGE_COPY 902,0,0,w%,h%-n%: wp% = w%: hp% = h%-n%
      ELSE
          IF sens$ = "G": ' rogner à gauche
              2D_IMAGE_COPY 902,n%,0,w%,h%: wp% = w%-n%: hp% = h%
          ELSE: ' "D" rogner à droite
              2D_IMAGE_COPY 902,0,0,w%-n%,h%: wp% = w%-n%: hp% = h%
          END_IF
      END_IF
  END_IF
  CLS: WIDTH 901,wp%: HEIGHT 901,hp%: 2D_IMAGE_PASTE 902,0,0
  FILE_SAVE 901,fr$
  2D_TARGET_IS 0: DELETE 900: DELETE 902
END_SUB
' ==============================================================================

Les exemples sont à adapter.
On peut évidemment assembler des images de proche en proche, pour faire par exemple un panoramic... euh, un panoramique, en rognant les parties qui se chevauchent.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
 
Bricoler des images
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [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
» nombre d'images dans un gif

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: