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
» Attention arnaque !
par Pedro Alvarez Hier à 20:03

» Qui fait quoi ?
par silverman Hier à 15:21

» ITEM_SELECT N,L pour synedit
par silverman Hier à 15:20

» Boussole
par jean_debord Hier à 11:06

» Roue à n faces
par Marc Dim 15 Juil 2018 - 22:16

» Planétarium virtuel.
par Pedro Alvarez Dim 15 Juil 2018 - 16:05

» Exemple d'une nouvelle version d'un GRID
par Jean Claude Ven 13 Juil 2018 - 10:32

» Roues dentées
par jean_debord Mar 10 Juil 2018 - 11:30

» Une simple question
par Oscaribout Sam 7 Juil 2018 - 23:20

» BUG sur l'objet TAB
par Jack Sam 7 Juil 2018 - 21:12

» Monopoly moderne
par jjn4 Sam 7 Juil 2018 - 15:06

» Récapitulatif ludothèque panoramic jjn4
par jjn4 Ven 6 Juil 2018 - 17:41

» Lignes ondulées
par JL35 Ven 6 Juil 2018 - 17:39

» bug off_activate 0 : sans d'effet
par silverman Ven 6 Juil 2018 - 13:02

» Position des objets d'un conteneur dans FBPano et Panoramic
par Navigateur Ven 6 Juil 2018 - 12:59

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

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

Partagez | 
 

 Bricoler des images

Aller en bas 
AuteurMessage
JL35



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

MessageSujet: Bricoler des images   Jeu 25 Aoû 2016 - 22: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
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» 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
» imabox.fr : uploader vos images

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: