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.
Découpe dans une image Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Découpe dans une image Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Découpe dans une image Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Découpe dans une image Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Découpe dans une image Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Découpe dans une image Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Découpe dans une image Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Découpe dans une image Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Découpe dans une image Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Découpe dans une image Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Découpe dans une image Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Découpe dans une image Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Découpe dans une image Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Découpe dans une image Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Découpe dans une image 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 à ne pas rater :
Code promo Nike : -25% dès 50€ d’achats sur tout le site Nike
Voir le deal

 

 Découpe dans une image

Aller en bas 
+4
Jicehel
papydall
Ouf_ca_passe
JL35
8 participants
AuteurMessage
JL35




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

Découpe dans une image Empty
MessageSujet: Découpe dans une image   Découpe dans une image EmptyJeu 5 Jan 2017 - 16:15

Pour découper une zone rectangulaire dans une image quelconque (jpg ou bmp, quand même).
Il suffit d'encadrer la zone à découper à la souris (clic, glisser, relâcher).
Après délimitation de la zone, il est possible grâce à des boutons de la manipuler: déplacer, agrandir, rétrécir, avant sauvegarde soit dans un fichier bmp, soit dans le presse-papier, pour utilisation ultérieure (par exemple dans le programme de dessin...).
Et c'est tout en Panoramic, pas d'appel à des ressources externes. Et pas trop gros (200 lignes)
Ajustage éventuel: fichier temporaire fm$, en tête du programme (C:\TEMP\...)
Code:

LABEL Quit,Chf,Chs,Svf,Modlum,Posit,Posit1,Deplace,Retouche,Zoom,Fonct,Convnoir
LABEL Eclair,Detour,Desno,Retour,Transnoi,Valmid,Annmid
DIM rt$,f$,fm$,fr$,s$,wf%,wb%,hb%,wi%,hi%,ws%,hs%,i%,j%,a$,b$,x%,y%,x1%,y1%,p%
DIM ps%,z%,rt%,gt%,bt%,nar%,fct%,h5%,mxr%,cxy,sx%,sy%
rt$ = "C:\TEMP\"
fr$ = rt$+"Image.bmp"
fm$ = rt$+"Imgtmp.bmp"
mxr% = 10: ' nombre maxi de retours arrière possibles (annulations)
DIM far$(mxr%)

BORDER_SMALL 0: wb% = WIDTH(0)-WIDTH_CLIENT(0): hb% = HEIGHT(0)-HEIGHT_CLIENT(0)
    HEIGHT 0,hb%+480
    FONT_NAME 0,"Arial": FONT_BOLD 0: COLOR 0,170,255,255: CAPTION 0," -  INCRUSTATION  D' IMAGE  -"
wf% = 150
' 1)
CONTAINER 10: TOP 10,5: LEFT 10,0: WIDTH 10,wf%: HEIGHT 10,90: COLOR 10,200,255,255
ALPHA 9: PARENT 9,10: TOP 9,7: LEFT 9,wf%/2-10
        FONT_NAME 9,"Wingdings": FONT_SIZE 9,18: FONT_COLOR 9,0,0,255: CAPTION 9,CHR$(129)
ALPHA 11: PARENT 11,10: TOP 11,TOP(9)+22: LEFT 11,5: CAPTION 11,"Image de fond (jpg,bmp):"
EDIT 12:  PARENT 12,10: TOP 12,TOP(11)+15: LEFT 12,2: WIDTH 12,wf%-4: ON_CLICK 12,Chf
ALPHA 13: PARENT 13,10: TOP 13,TOP(12)+22: LEFT 13,5: CAPTION 13," w x h"
' 2)
CONTAINER 14: TOP 14,TOP(10)+HEIGHT(10)+5: LEFT 14,0: WIDTH 14,wf%: HEIGHT 14,250
              COLOR 14,255,255,200
ALPHA 18: PARENT 18,14: TOP 18,7: LEFT 18,wf%/2-10
          FONT_NAME 18,"Wingdings": FONT_SIZE 18,18: FONT_COLOR 18,0,0,255: CAPTION 18,CHR$(130)
ALPHA 15: PARENT 15,14: TOP 15,TOP(18)+22: LEFT 15,5
          a$ = "    Sprite à incruster :": CAPTION 15,a$
EDIT 16:  PARENT 16,14: TOP 16,TOP(15)+15: LEFT 16,2: WIDTH 16,WIDTH(12): ON_CLICK 16,Chs
ALPHA 17: PARENT 17,14: TOP 17,TOP(16)+22: LEFT 17,LEFT(13): CAPTION 17," w x h"
BUTTON 38: PARENT 38,14: TOP 38,TOP(17)+15: LEFT 38,15: WIDTH 38,120: ' HEIGHT 38,18
          CAPTION 38,"Outil mise en forme": ON_CLICK 38,Retouche

ALPHA 20: PARENT 20,14: TOP 20,TOP(38)+30: LEFT 20,5
          CAPTION 20,"Clic l'emplacement, puis:"
BUTTON 21: PARENT 21,14: TOP 21,TOP(20)+20: WIDTH 21,23: LEFT 21,5: CAPTION 21,CHR$(231)
BUTTON 22: PARENT 22,14: TOP 22,TOP(21): WIDTH 22,WIDTH(21): LEFT 22,LEFT(21)+26: CAPTION 22,CHR$(232)
BUTTON 23: PARENT 23,14: TOP 23,TOP(21): WIDTH 23,WIDTH(21): LEFT 23,LEFT(22)+26: CAPTION 23,CHR$(233)
BUTTON 24: PARENT 24,14: TOP 24,TOP(21): WIDTH 24,WIDTH(21): LEFT 24,LEFT(23)+26: CAPTION 24,CHR$(234)
          FOR i% = 21 TO 24: FONT_NAME i%,"Wingdings": ON_CLICK i%,Deplace: NEXT i%
SPIN 25: PARENT 25,14: TOP 25,TOP(21)+2: WIDTH 25,40: LEFT 25,LEFT(24)+25
        MIN 25,1: MAX 25,200: POSITION 25,5
       
ALPHA 26: PARENT 26,14: TOP 26,TOP(25)+30: LEFT 26,5: CAPTION 26,"Zoom x"
EDIT 27: PARENT 27,14: TOP 27,TOP(26)-3: LEFT 27,LEFT(26)+43: WIDTH 27,25: TEXT 27,"1.0"
BUTTON 28: PARENT 28,14: WIDTH 28,25: HEIGHT 28,18: TOP 28,TOP(27)+2: LEFT 28,LEFT(27)+WIDTH(27)+2
          CAPTION 28,"OK": ON_CLICK 28,Posit1
ALPHA 29: PARENT 29,14: TOP 29,TOP(26): LEFT 29,LEFT(28)+30: CAPTION 29,"(Ex: 1.2)"

ALPHA 30: PARENT 30,14: TOP 30,TOP(27)+25: LEFT 30,1: CAPTION 30,"Lumin.  Contraste Gamma"
SPIN 31: PARENT 31,14: TOP 31,TOP(30)+15: LEFT 31,0: WIDTH 31,45
SPIN 32: PARENT 32,14: TOP 32,TOP(31): LEFT 32,LEFT(31)+50: WIDTH 32,WIDTH(31)
SPIN 33: PARENT 33,14: TOP 33,TOP(31): LEFT 33,LEFT(32)+50: WIDTH 33,WIDTH(31)
        FOR i% = 31 TO 33
            MIN i%,-127: MAX i%,127: POSITION i%,0: ON_CHANGE i%,Modlum
        NEXT i%
ALPHA 34: PARENT 34,14: TOP 34,TOP(31)+25: LEFT 34,40: FONT_ITALIC 34
          CAPTION 34,"(-127 à +128)"
' 3)
CONTAINER 39: TOP 39,TOP(14)+HEIGHT(14)+5: LEFT 39,0: WIDTH 39,wf%: HEIGHT 39,110
              COLOR 39,255,180,100
ALPHA 44: PARENT 44,39: TOP 44,7: LEFT 44,wf%/2-10
          FONT_NAME 44,"Wingdings": FONT_SIZE 44,18: FONT_COLOR 44,0,0,255: CAPTION 44,CHR$(131)
ALPHA 40: PARENT 40,39: TOP 40,TOP(44)+22: LEFT 40,2
          CAPTION 40,"Sauvegarder sous (bmp) :"
EDIT 41: PARENT 41,39: TOP 41,TOP(40)+15: LEFT 41,LEFT(12): WIDTH 41,WIDTH(12): ON_CLICK 41,Svf
BUTTON 42: PARENT 42,39: TOP 42,TOP(41)+35: LEFT 42,30: CAPTION 42,"Quitter"
          ON_CLICK 42,Quit
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
h5% = 380: ' Form de mise en forme du sprite
FORM 50: HIDE 50: BORDER_SMALL 50: TOP 50,TOP(14)+TOP(38)+50: LEFT 50,0: HEIGHT 50,h5%
        FONT_NAME 50,"Arial": COLOR 50,190,255,255
PANEL 51: PARENT 51,50: WIDTH 51,160: HEIGHT 51,HEIGHT(50)-hb%: COLOR 51,255,255,180
ALPHA 45: PARENT 45,51: TOP 45,3: LEFT 45,40: CAPTION 45,"Zoom x"
SPIN 46: PARENT 46,51: TOP 46,TOP(45)-3: LEFT 46,LEFT(45)+40: WIDTH 46,35
        MIN 46,1: MAX 46,9: POSITION 46,1: ON_CHANGE 46,Zoom
BUTTON 54: PARENT 54,51: TOP 54,TOP(46)+25: LEFT 54,2: WIDTH 54,WIDTH(51)-4
          HEIGHT 54,20: CAPTION 54,"Convertir les noirs en 1,1,1": ON_CLICK 54,Convnoir
ALPHA 48: PARENT 48,51: TOP 48,TOP(54)+20
          CAPTION 48," (pour différencier de la"+CHR$(10)+"            transparence 0,0,0)"
PROGRESS_BAR 55: PARENT 55,51: TOP 55,TOP(48)+28: WIDTH 55,WIDTH(51)
BUTTON 49: PARENT 49,51: TOP 49,TOP(55)+20: LEFT 49,2: WIDTH 49,WIDTH(51)-4
          HEIGHT 49,20: CAPTION 49,"Éclaircir les blancs": ON_CLICK 49,Eclair
ALPHA 56: PARENT 56,51: TOP 56,TOP(49)+28: LEFT 56,2: CAPTION 56,"Détourer avec transparence"
          FONT_BOLD 56: FONT_UNDERLINE 56
ALPHA 57: PARENT 57,51: TOP 57,TOP(56)+22: LEFT 57,5: CAPTION 57,"Pinceau            pixels"
SPIN 58: PARENT 58,51: TOP 58,TOP(57)-3: LEFT 58,45: WIDTH 58,35
        MIN 58,1: MAX 58,20: POSITION 58,1
PICTURE 59: PARENT 59,51: TOP 59,TOP(58): WIDTH 59,25: HEIGHT 59,20: LEFT 59,115
        rt% = 255: gt% = 0: bt% = 255: COLOR 59,rt%,gt%,bt%: ' couleur de tracé transparence
ALPHA 65: PARENT 65,51: TOP 65,TOP(58)+28: LEFT 65,5: CAPTION 65,"Au clic:"
CONTAINER_OPTION 71: PARENT 71,51: TOP 71,TOP(65)-10: LEFT 71,43: WIDTH 71,114: HEIGHT 71,25
          COLOR 71,255,255,140
OPTION 72: PARENT 72,71: TOP 72,10: LEFT 72,2: CAPTION 72,"Tracer"
OPTION 73: PARENT 73,71: TOP 73,TOP(72): LEFT 73,LEFT(72)+52: CAPTION 73,"Remplir"
          MARK_ON 72: ON_CLICK 72,Fonct: ON_CLICK 73,Fonct
BUTTON 67: PARENT 67,51: TOP 67,TOP(71)+30: LEFT 67,13: WIDTH 67,120: HEIGHT 67,20
        CAPTION 67,"Annuler le dernier tracé": ON_CLICK 67,Annmid
a$="Convertir le détourage coloré"+CHR$(10)+"(magenta) en noir pur"
Bouton(60,51,1,TOP(67)+30,WIDTH(51)-2,30,a$): ' appel à la Sub Bouton
        ON_CLICK 60,Transnoi
PROGRESS_BAR 61: PARENT 61,51: TOP 61,TOP(60)+HEIGHT(60): WIDTH 61,WIDTH(51)
ALPHA 62: PARENT 62,51: TOP 62,TOP(61)+25
          CAPTION 62," Sauvegarder le sprite (bmp) :"
EDIT 63: PARENT 63,51: TOP 63,TOP(62)+15: LEFT 63,2: WIDTH 63,WIDTH(51)-4
BUTTON 68: PARENT 68,51: TOP 68,TOP(63)+26: LEFT 68,35: ' WIDTH 68,70
          CAPTION 68,"OK": ON_CLICK 68,Valmid
PICTURE 70: PARENT 70,50: LEFT 70,WIDTH(51): p% = 70: ' image du sprite
          ON_CLICK p%,Detour

OPEN_DIALOG 80: FILTER 80,"Images JPG,BMP|*.jpg;*.bmp"
SAVE_DIALOG 81: FILTER 81,"Image BMP|*.bmp"

SCENE2D 100: HIDE 100: TOP 100,0: LEFT 100,wf%: ON_CLICK 100,Posit
SPRITE 100
fct% = 1: ON_MOUSE_DOWN p%,Detour: ON_MOUSE_UP p%,Retour
END
' ==============================================================================
Quit:
  IF FILE_EXISTS(fr$) = 1 THEN FILE_DELETE fr$
  IF FILE_EXISTS(fm$) = 1 THEN FILE_DELETE fm$
  FOR i% = 1 TO mxr%
      a$ = rt$+"Sav"+STR$(i%)+".bmp"
      IF FILE_EXISTS(a$) = 1 THEN FILE_DELETE a$: ' nettoyage des sauvegardes temporaires
  NEXT i%
  TERMINATE
' ==============================================================================
Chf:
  ' Choix de l'image de fond
  f$ = "": a$ = FILE_NAME$(80): IF LEN(a$)<5 THEN RETURN
  b$ = UPPER$(FILE_EXTRACT_EXTENSION$(a$))
  IF b$<>".BMP" AND b$<>".JPG"
      MESSAGE "L'image doit être du type BMP ou JPG !": RETURN
  END_IF
  TEXT 12,a$: f$ = a$
  IF b$ = ".JPG" THEN JpgToBmp(a$,fr$): f$ = fr$
  DimBmp(f$)
  WIDTH 0,wi%+wf%+wb%+1: HEIGHT 0,hi%+hb%: IF HEIGHT(0)<(hb%+480) THEN HEIGHT 0,hb%+480
  WIDTH 100,wi%: HEIGHT 100,hi%: FILE_LOAD 100,f$
  CAPTION 13," "+STR$(wi%)+" x "+STR$(hi%)
  SHOW 100
RETURN
' ==============================================================================
Chs:
  ' Choix du sprite à insérer
  s$ = "": a$ = FILE_NAME$(80): IF LEN(a$)<5 THEN RETURN
  b$ = UPPER$(FILE_EXTRACT_EXTENSION$(a$))
  IF b$<>".BMP" AND b$<>".JPG"
      MESSAGE "L'image doit être du type BMP ou JPG !": RETURN
  END_IF
  TEXT 16,a$: s$ = a$
  IF b$ = ".JPG" THEN JpgToBmp(a$,fm$): s$ = fm$
  i%=wi%: j%=hi%: DimBmp(s$): ws%=wi%: hs%=hi%: wi%=i%: hi%=j%
  CAPTION 17," "+STR$(ws%)+" x "+STR$(hs%)
RETURN
' ==============================================================================
Svf:
  ' Sauvegarde du résultat
  a$ = TEXT$(41): ' Si pas de nom de fichier, sauvegarde dans le clipboard
  IF a$ <> ""
      b$ = UPPER$(FILE_EXTRACT_EXTENSION$(a$))
      IF b$<>".BMP"
          MESSAGE "L'image doit être du type BMP !": RETURN
      END_IF
  END_IF
  Capture_0(LEFT(100),TOP(100),wi%,hi%,a$)
RETURN
' ==============================================================================
Modlum:
  ' Modification luminosité, contraste et gamma du sprite
  IF s$ = "" THEN RETURN
  SPRITE_FILE_LOAD 100,s$: SPRITE_POSITION 100,x%,y%: ' régénère
  i% = NUMBER_CHANGE
  SELECT i%
      CASE 31: SPRITE_BRIGHTNESS 100,POSITION(31)
      CASE 32: SPRITE_CONTRAST 100,POSITION(32)
      CASE 33: SPRITE_GAMMA 100,POSITION(33)
  END_SELECT
RETURN
' ==============================================================================
Posit:
  ' Clic de positionnement du sprite
  x% = MOUSE_X_POSITION(100): y% = MOUSE_Y_POSITION(100): sx% = x%: sy% = y%
Posit1:
  SPRITE_FILE_LOAD 100,s$
  SPRITE_POSITION 100,sx%,sy%
  cxy = VAL(TEXT$(27)): ' facteur de zoom
  IF cxy > 0 THEN SPRITE_SCALE 100,cxy,cxy
RETURN
' ==============================================================================
Deplace:
  ps% = POSITION(25): ' pas de déplacement, en pixels
  i% = NUMBER_CLICK
  SELECT i%
      CASE 21: x% = x%-ps%
      CASE 22: x% = x%+ps%
      CASE 23: y% = y%-ps%
      CASE 24: y% = y%+ps%
  END_SELECT
  SPRITE_POSITION 100,x%,y%
RETURN
' ==============================================================================
Retouche:
  IF s$ = "" THEN RETURN
  WIDTH 50,WIDTH(51)+ws%+wb%: HEIGHT 50,hs%+hb%: IF HEIGHT(50)<h5% THEN HEIGHT 50,h5%
  WIDTH p%,ws%: HEIGHT p%,hs%: FILE_LOAD p%,s$
  CAPTION 50,s$: POSITION 46,1: z% = 1
  SHOW 50: TO_FOREGROUND 50
RETURN
' ==============================================================================
Zoom:
  CLIPBOARD_COPY p%
  z% = POSITION(46): ' niveau de zoom
  WIDTH 50,WIDTH(51)+z%*ws%+wb%
  IF HEIGHT(50)<(z%*hs%+hb%) THEN HEIGHT 50,z%*hs%+hb%
  WIDTH p%,z%*ws%: HEIGHT p%,z%*hs%: STRETCH_ON p%
  CLIPBOARD_PASTE p%
RETURN
' ==============================================================================
Fonct:
  IF CHECKED(72) = 1: ' tracé libre jusqu'au relâchement
      fct% = 1
  ELSE
      fct% = 2: ' remplissage de la zone cliquée
  END_IF
RETURN
' ==============================================================================
Convnoir:
  ' Remplacer les noirs purs (0,0,0) de l'image en 1,1,1
  IF s$ = "" THEN MESSAGE "Pas de sprite !": RETURN
  Replace_color(p%,ws%,hs%,0,0,0,1,1,1,55)
RETURN
' ==============================================================================
Eclair:
  IF s$ = "" THEN MESSAGE "Pas de sprite !": RETURN
  Eclaircir(p%,ws%,hs%,230): ' convertir en blanc pur les couleurs > 230,230,230
RETURN
' ==============================================================================
Detour:
  ' Clic dans le dessin
  x1% = MOUSE_X_POSITION(p%): y1% = MOUSE_Y_POSITION(p%)
  x1% = x1%/z%: y1% = y1%/z%
  nar% = nar%+1: IF nar%>mxr% THEN nar% = 1
  FILE_SAVE p%,rt$+"Sav"+STR$(nar%)+".bmp": ' sauvegarde préalable
  2D_TARGET_IS p%: 2D_PEN_COLOR rt%,gt%,bt%: 2D_PEN_WIDTH POSITION(58)
  IF fct% = 1: ' tracé libre
      ON_MOUSE_MOVE p%,Desno
      2D_POINT x1%,y1%
  ELSE: ' remplissage de la zone cliquée
      2D_FLOOD x1%,y1%,rt%,gt%,bt%
  END_IF
RETURN
' ==============================================================================
Desno:
  ' Déplacement (tracé)
  ON_MOUSE_MOVE p%,Desno
  x% = MOUSE_X_POSITION(p%): y% = MOUSE_Y_POSITION(p%)
  x% = x%/z%: y% = y%/z%
  IF x%<>x1% OR y%<>y1%
      nar% = nar%+1: IF nar%>mxr% THEN nar% = 1
      FILE_SAVE p%,rt$+"Sav"+STR$(nar%)+".bmp": ' sauvegarde préalable
      2D_LINE x1%,y1%,x%,y%: x1%=x%: y1%=y%
  END_IF
RETURN
' ==============================================================================
Retour:
  ' Relâchement bouton, fin de tracé
  OFF_MOUSE_MOVE p%
  2D_TARGET_IS 0
RETURN
' ==============================================================================
Transnoi:
  ' remplacer la couleur de tracé par le noir pur (transparence)
  Replace_color(p%,ws%,hs%,rt%,gt%,bt%,0,0,0,61)
RETURN
' ==============================================================================
Valmid:
  ' validation des modifs du sprite
  s$ = TEXT$(63): IF s$ = "" THEN s$ = fm$
  FILE_SAVE p%,s$
  HIDE 50
RETURN
' ==============================================================================
Annmid:
  ' Annulation du dernier tracé
  FILE_LOAD p%,rt$+"Sav"+STR$(nar%)+".bmp": ' restore état précédent
  nar% = nar%-1: IF nar% = 0 THEN nar% = 10
RETURN
' ==============================================================================
SUB Bouton(b%,p%,x%,y%,w%,h%,txt$)
  ' Création d'un bouton b% multilignes, parent p%
  ' txt$ (caption): lignes séparées par CHR$(10)
  DIM_LOCAL n2d%,npr%,wt%,ht%,i%,k%,a$,t$(10),l%
  PICTURE b%: PARENT b%,p%: TOP b%,y%: LEFT b%,x%: WIDTH b%,w%: HEIGHT b%,h%
  n2d% = NUMBER_2D_TARGET: npr% = NUMBER_PRINT_TARGET: PRINT_TARGET_IS b%
  2D_TARGET_IS b%: COLOR b%,210,210,210: 2D_FILL_COLOR 210,210,210
  wt% = 0: ht% = 0: l% = 0: k% = INSTR(txt$,CHR$(10))
  WHILE k%>0
      l% = l%+1: t$(l%) = LEFT$(txt$,k%-1): txt$ = RIGHT_POS$(txt$,k%+1)
      i% = TEXT_WIDTH(t$(l%),b%): IF i%>wt% THEN wt%=i%
      ht% = ht%+TEXT_HEIGHT(t$(l%),b%): k% = INSTR(txt$,CHR$(10))
  END_WHILE
  l% = l%+1: t$(l%) = txt$: i% = TEXT_WIDTH(t$(l%),b%): IF i%>wt% THEN wt%=i%
  ht% = ht%+TEXT_HEIGHT(t$(l%),b%)
  y% = (h%-ht%)/2-2: ht% = TEXT_HEIGHT(t$(l%),b%): ' centré
  FOR i% = 1 TO l%
      x% = (w%-TEXT_WIDTH(t$(i%),b%))/2: PRINT_LOCATE x%,y% : PRINT t$(i%)
      y% = y%+ht%
  NEXT i%
  2D_FILL_OFF: 2D_RECTANGLE -1,-1,w%-2,h%-2: 2D_RECTANGLE 0,0,w%-1,h%-1
  2D_TARGET_IS n2d%: PRINT_TARGET_IS npr%
END_SUB
' ==============================================================================
SUB DimBmp(f$)
  ' Image BMP, dimensions dans wi% et hi%
  FILEBIN_OPEN_READ 1,f$
    FILEBIN_POSITION 1,18: wi% = FILEBIN_READ(1)+256*FILEBIN_READ(1)
    FILEBIN_POSITION 1,22: hi% = FILEBIN_READ(1)+256*FILEBIN_READ(1)
  FILEBIN_CLOSE 1
END_SUB
' ==============================================================================
SUB JpgToBmp(f$,fr$)
  ' Conversion image Bmp -> Jpg
  PICTURE 1099: HIDE 1099: FILE_LOAD 1099,f$: FILE_SAVE 1099,fr$: DELETE 1099
END_SUB
' ==============================================================================
SUB Capture_0(x,y,w,h,f$)
  ' Capture d'une zone de Form 0, en x,y relatifs, dimensions w x h,
  ' dans f$ (bmp), ou dans le presse-papier (clipboard) si f$ = ""
  ' ATTENTION: x et y relatifs à FORM 0
  DIM_LOCAL c2d%
  c2d% = NUMBER_2D_TARGET: 2D_TARGET_IS 0: WAIT 100
  IMAGE 1000: 2D_IMAGE_COPY 1000,x,y,x+w,y+h
  IF f$ = ""
      CLIPBOARD_COPY 1000
  ELSE
      FILE_SAVE 1000,f$
  END_IF
  DELETE 1000
  2D_TARGET_IS c2d%
END_SUB
' ==============================================================================
SUB Eclaircir(p%,w%,h%,c%)
' Convertir en blanc pur les couleurs supérieures ou égales à c%
' ( R>=c% et G>=c% et B>=c% )
  DIM_LOCAL x%,y%,r%,g%,b%
  2D_TARGET_IS p%: 2D_PEN_COLOR 255,255,255
  FOR y% = 0 TO h%-1
      FOR x% = 0 TO w%-1
          r%=COLOR_PIXEL_RED(p%,x%,y%): g%=COLOR_PIXEL_GREEN(p%,x%,y%)
          b%=COLOR_PIXEL_BLUE(p%,x%,y%): ' couleur du point
          IF r%>=c% AND g%>=c% AND b%>=c% THEN 2D_POINT x%,y%
      NEXT x%: DISPLAY
  NEXT y%
END_SUB
' ==============================================================================
SUB Replace_color(p%,w%,h%,r%,g%,b%,r1%,g1%,b1%,pb%)
  ' Dans le picture p%, remplacer la couleur r%,g%,b% par r1%,g1%,b1% entre w% et h%
  ' pb% = Progress_bar éventuelle (si >0)
  DIM_LOCAL x%,y%,ci%,c%
  2D_TARGET_IS p%: 2D_PEN_COLOR r1%,g1%,b1%
  ci% = (r%*256+g%)*256+b%: ' couleur à remplacer
  IF pb% > 0 THEN MIN pb%,0: MAX pb%,h%-1: ' Progress_Bar
  FOR y% = 0 TO h%-1
      IF pb% > 0 THEN POSITION pb%,y%
      FOR x% = 0 TO w%-1
          c%=65536*COLOR_PIXEL_RED(p%,x%,y%)+256*COLOR_PIXEL_GREEN(p%,x%,y%)
          c% = c%+COLOR_PIXEL_BLUE(p%,x%,y%): ' couleur du point
          IF c% = ci% THEN 2D_POINT x%,y%
      NEXT x%: DISPLAY
  NEXT y%
END_SUB
' ==============================================================================
Découpe dans une image Exempl15

06/01 J'ai (quand même) remplacé le timer par des appels aux nouvelles fonctions ON_MOUSE... c'est quand même plus simple à gérer.
        Et fait quelques modifications esthétiques.


PS: 06/01 dernières modifs à 22h, puis 23h !


Dernière édition par JL35 le Sam 14 Jan 2017 - 16:57, édité 1 fois
Revenir en haut Aller en bas
Ouf_ca_passe




Nombre de messages : 285
Age : 76
Localisation : Villeneuve d'Ascq (59-Dpt du NORD) France
Date d'inscription : 21/12/2015

Découpe dans une image Empty
MessageSujet: Et un utilitaire de plus !   Découpe dans une image EmptyMar 10 Jan 2017 - 8:30

JL35 m'a écrit ...

"
Manifestement ton image d'avatar est au format PNG, or on ne peut charger dans le programme que des images JPG ou BMP (comme précisé en tête de la fenêtre: 'Image de fond; JPG,BMP'). Il faut sinon les convertir préalablement dans un de ces deux formats, les seuls que PANORAMIC peut charger dans un Picture.

Il faut, d'une façon ou d'une autre, copier ton avatar dans le presse-papier, mais on ne peut pas avec des moyens PANORAMIC (because le format PNG).

Donc lire l'image dans un logiciel de dessin, ou autre, (ce que j'ai fait avec IrfanView) et de là le copier dans le presse-papier.
Dans mon programme, cliquer simplement le bouton 'Coller' (ne rien mettre dans la case à côté !), et l'image s'affiche dans la fenêtre.

Il faut impérativement écrire un nom de fichier avec l'extension .bmp pour sauvegarder, sinon ça ne marche pas (il ne signale pas l'erreur...).
"

Ouf_ca_passe vient d'écrire ...

AND YOU KNOW WHAT ?

"CA MARCHE !" cheers
Revenir en haut Aller en bas
JL35




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

Découpe dans une image Empty
MessageSujet: Re: Découpe dans une image   Découpe dans une image EmptyMar 10 Jan 2017 - 13:26

Salut Ouf_ca_passe, tu me rassures !

Le crop ci-dessus permet soit de recadrer une image (pour faire disparaître des éléments en périphérie par exemple), ou de découper une partie (ce qui revient au même !), par exemple extraire un visage d'une photo de groupe, etc.

Je suis en train de coder l'insertion d'une petite image (par exemple un découpage ci-dessus) dans une autre image, avec la possibilité de détourer la petite image au noir sous une forme quelconque, pour l'insérer sous forme de Sprite dans la grande image qui est dans ce cas un Scene2d.
Le problème c'est qu'on n'a pas en Panoramic la possibilité de sauvegarder le résultat (Scene2d + Sprite superposé) dans un fichier.
Tant pis, je fais une capture d'écran (toujours en Panoramic Very Happy )
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

Découpe dans une image Empty
MessageSujet: Re: Découpe dans une image   Découpe dans une image EmptyMar 10 Jan 2017 - 14:29

Ouf_ca_passe:
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


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

Découpe dans une image Empty
MessageSujet: Re: Découpe dans une image   Découpe dans une image EmptyMar 10 Jan 2017 - 14:31

A mon avis, tu devrais en faire la demande à Jack en ce moment puisqu'il va intégrer les fonctions 2D dans Panoramic.
Autant le faire maintenant tant qu'il a les mains dans le cambouis sur ce sujet, mais j'approuve ta demande, pouvoir sauvegarder ou copier le Scene_2D vers une image (en mémoire et / ou sur le disque) serait bien utile dans certain cas (sans passer par des bidouille car il me semble me rappeler que par une astuce, on peut le faire. Je ne me souviens plus bien mais quelqu'un avait donné l'astuce, je crois avec un picture caché sous le scene_2D ou un truc du genre, mais je me trompe peut être...)
Revenir en haut Aller en bas
JL35




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

Découpe dans une image Empty
MessageSujet: Re: Découpe dans une image   Découpe dans une image EmptyMar 10 Jan 2017 - 16:02

Je ne sais pas si ça intéresserait grand monde, et... je ne vais pas embêter Jack avec ça, par contre ce qui serait bien c'est que Panoramic_Editor soit à jour avec la documentation des nouveaux mots-clés qui a pris pas mal de retard (depuis novembre/décembre 2015: 0.9.27i1), mais je veux bien croire que c'est un sacré boulot !

Et puis ça marche bien avec la capture écran, mais avec ce système on est limité à la taille du moniteur.

Pour la référence tu voulais peut-être parler de ceci: https://panoramic.1fr1.net/t4670-sauvegarde-scene2d?highlight=scene2d (ouvert par moi, tiens...), mais il n'y a pas eu de solution satisfaisante.
Revenir en haut Aller en bas
Parpaiun

Parpaiun


Nombre de messages : 192
Age : 85
Localisation : HERAULT
Date d'inscription : 15/04/2015

Découpe dans une image Empty
MessageSujet: Découpe dans une image   Découpe dans une image EmptySam 14 Jan 2017 - 9:42

Bonjour JL35, en dépit de ton intéressante capture d'écran, ça fait longtemps que j'ai proposé à tous un autre logiciel absolument in-con-tour-na-ble en raison de nombre de ses possibilités , en l'occurence GREENSHOT dans le site Internet suivant :
getgreenshot.org/downloads/:
. J'espère que tu en feras l'essai et me dire ce que tu en penses. Merci et bonne lecture ! study
Revenir en haut Aller en bas
Francis-mr




Nombre de messages : 186
Date d'inscription : 26/11/2012

Découpe dans une image Empty
MessageSujet: Re: Découpe dans une image   Découpe dans une image EmptySam 14 Jan 2017 - 11:46

N'en déplaise à Parpaiun, l'intérêt du travail de JL35 c'est l'utilisation de Panoramic, car nous sommes sur le forum de Panoramic  et des logiciels de découpe d'image il en existe des dizaines.
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

Découpe dans une image Empty
MessageSujet: Re: Découpe dans une image   Découpe dans une image EmptySam 14 Jan 2017 - 12:28

Bien dit ! king
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Découpe dans une image Empty
MessageSujet: Re   Découpe dans une image EmptySam 14 Jan 2017 - 12:47

J' aurai pas dit mieux.
Laughing
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Découpe dans une image Empty
MessageSujet: Re: Découpe dans une image   Découpe dans une image EmptySam 14 Jan 2017 - 12:57

Ben Oui !

Si j'avais eu réellement besoin d'un carnet d'adresse j'en aurai trouvé un paquet sur le web !
Si Minibug avait eu réellement besoin d'un éditeur pour Panoramic il en aurai trouvé un sur ce Forum !
Et j'en passe.....

Pas d'autres commentaires Mad

A+
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

Découpe dans une image Empty
MessageSujet: Re: Découpe dans une image   Découpe dans une image EmptySam 14 Jan 2017 - 13:44

Jean Claude a écrit:
Si j'avais eu réellement besoin d'un carnet d'adresse j'en aurai trouvé un paquet sur le web !

Je te propose mieux :
Va chez le libraire du coin ; achète un carnet et … griffonne les adresses de ceux qui t’intéressent.
Garde le carnet dans ta poche secrète et consulte-le quand tu en as besoin !

Découpe dans une image Petit-mdr-168


Dernière édition par papydall le Sam 14 Jan 2017 - 23:42, édité 1 fois
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




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

Découpe dans une image Empty
MessageSujet: Re: Découpe dans une image   Découpe dans une image EmptySam 14 Jan 2017 - 14:20

Ça papydall c'est la solution écolo !

Ceci dit je crois Parpaiun que tu n'as pas compris le sens du forum. Il est bien évident que tous ceux qui postent des programmes ici n'ont pas la prétention de rivaliser avec des programme du commerce. Tout a déjà été fait, en mieux, il suffit de chercher un peu sur google.

Ici c'est le plaisir de réaliser les choses soi-même, de bricoler, d'assembler des éléments pour les faire fonctionner ensemble et d'arriver à un résultat.
Que tu peux juger médiocre, certes, mais... "c'est moi qui l'ai fait !".

Et puis ça permet aux autres d'apprendre quelque chose peut-être, et surtout de reprendre le code et de le modifier à leur façon, et d'avoir le plaisir d'utiliser quelque chose qu'on a fait soi-même.

Et au passage merci encore à Jack pour ce langage Panoramic qui est le plus agréable à coder de ceux que j'ai utilisés jusqu'ici.

PS pour papydall
Si la poche sécrète, c'est qu'il y a une fuite quelque part ! Very Happy
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Découpe dans une image Empty
MessageSujet: re   Découpe dans une image EmptySam 14 Jan 2017 - 14:40

Découpe dans une image Dd719e00
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Découpe dans une image Empty
MessageSujet: Re: Découpe dans une image   Découpe dans une image EmptySam 14 Jan 2017 - 19:37

Joli jeu de mot sur la faute de Papydall... Il va être martien.. heu tout vert, pardon...
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

Découpe dans une image Empty
MessageSujet: Re: Découpe dans une image   Découpe dans une image EmptySam 14 Jan 2017 - 23:57

No No No No No No No No No No No No No No No No No No No No
J’ai désaccentué le E de la poche secrète dans mon post ci-haut.
Cette poche secrète ne sécrète plus rien.
Elle est devenue étanche mais reste inconnue.

Et dire qu’un simple accent sur une voyelle modifie profondément le sens d’un mot !
Vive l’orthographe française et ses pièges !

alien alien alien alien alien alien alien alien alien alien alien alien alien alien alien alien alien alien alien alien
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


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

Découpe dans une image Empty
MessageSujet: Re: Découpe dans une image   Découpe dans une image EmptyDim 15 Jan 2017 - 10:32

mdr... Smile
Revenir en haut Aller en bas
Contenu sponsorisé





Découpe dans une image Empty
MessageSujet: Re: Découpe dans une image   Découpe dans une image Empty

Revenir en haut Aller en bas
 
Découpe dans une image
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Découpe dans une image
» Utilitaire Découpe d'une image
» Récupérer l'image d'un IMAGE dans un picture
» image dans KGF Grid
» Défilement dans une grande image

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: