Novembre 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 | | Calendrier |
|
|
| Découpe dans une image | |
|
+4Jicehel papydall Ouf_ca_passe JL35 8 participants | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Découpe dans une image Jeu 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 ' ==============================================================================
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 | |
| | | Ouf_ca_passe
Nombre de messages : 285 Age : 76 Localisation : Villeneuve d'Ascq (59-Dpt du NORD) France Date d'inscription : 21/12/2015
| Sujet: Et un utilitaire de plus ! Mar 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 !" | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Découpe dans une image Mar 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 ) | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Découpe dans une image Mar 10 Jan 2017 - 14:29 | |
| | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Découpe dans une image Mar 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...) | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Découpe dans une image Mar 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. | |
| | | Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: Découpe dans une image Sam 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 ! | |
| | | Francis-mr
Nombre de messages : 186 Date d'inscription : 26/11/2012
| Sujet: Re: Découpe dans une image Sam 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. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Découpe dans une image Sam 14 Jan 2017 - 12:28 | |
| Bien dit ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re Sam 14 Jan 2017 - 12:47 | |
| J' aurai pas dit mieux. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Découpe dans une image Sam 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 A+ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Découpe dans une image Sam 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 !
Dernière édition par papydall le Sam 14 Jan 2017 - 23:42, édité 1 fois | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Découpe dans une image Sam 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 papydallSi la poche sécrète, c'est qu'il y a une fuite quelque part ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 14 Jan 2017 - 14:40 | |
| | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Découpe dans une image Sam 14 Jan 2017 - 19:37 | |
| Joli jeu de mot sur la faute de Papydall... Il va être martien.. heu tout vert, pardon... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Découpe dans une image Sam 14 Jan 2017 - 23:57 | |
| | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Découpe dans une image Dim 15 Jan 2017 - 10:32 | |
| mdr... | |
| | | Contenu sponsorisé
| Sujet: Re: Découpe dans une image | |
| |
| | | | Découpe dans une image | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |