JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Redimensionner une image Mar 4 Avr 2017 - 18:02 | |
| Une autre technique toute simple, sans la contrainte des dimensions de l'écran, pour redimensionner une image à des dimensions données (réduction ou augmentation proportionnelle ou non): - Code:
-
DIM f$,fr$,w%,h% f$ = "C:\GRAPH\JPG\goldgate.jpg" fr$ = "Z:\Image1.bmp" w% = 400: h% = 0 RedimImg(f$,w%,h%,fr$) print "Terminé !" END
SUB RedimImg(f$,w%,h%,fr$) ' Redimensionner l'image f$ (BMP ou JPG) en w% x h%, résultat dans fr$ (BMP) ' Si w% = 0 ou h% = 0: redimensionnement proportionnel DIM_LOCAL fm$,wi%,hi%,cx,cy,op% fm$ = "C:\TEMP\Provimg.bmp" op% = 1000: ' objet provisoire IF UPPER$(FILE_EXTRACT_EXTENSION$(f$)) = ".JPG" PICTURE op%: FILE_LOAD op%,f$: FILE_SAVE op%,fm$: DELETE op%: f$ = fm$ END_IF 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 IF h% = 0 h% = w%*hi%/wi% ELSE IF w% = 0 THEN w% = h%*wi%/hi% END_IF cx = w%/wi%: cy = h%/hi% SCENE2D op%: HIDE op%: WIDTH op%,w%: HEIGHT op%,h% SPRITE op%: SPRITE_FILE_LOAD op%,f$: SPRITE_SCALE op%,cx,cy SNAPSHOT op%,fr$ DELETE op%: IF FILE_EXISTS(fm$) = 1 THEN FILE_DELETE fm$ END_SUB - l'image d'origine est obligatoirement du type bmp ou jpg - l'image résultante est obligatoirement du type bmp - si une des dimensions données est 0, le résultat est proportionnel à l'original | |
|