JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Redimensionner une image (bis) Jeu 12 Fév 2015 - 21:11 | |
| Suite au post de mindstorm qui voulait dilater ou rétrécir un texte... ça ne peut se faire à mon avis que sous forme d'image. J'avais déjà donné une sub, mais je m'aperçois qu'elle a quelques failles. En voici une autre. Le principe: charger le fichier image dans un picture aux dimensions voulues, avec Stretch_on, puis récupération et enregistrement de l'image obtenue (on ne peut pas hélas la copier pixel par pixel, ce serait un peu long mais simple, mais ça ne marche pas). - Code:
-
DIM f$,fr$,p1,p2,zoomh,zoomv,y%,x% f$ = "C:\GRAPH\JPG\Rafale.jpg": ' image 373x547 fr$ = "Z:\Rafale_redim.bmp" WIDTH 0,800: HEIGHT 0,800: COLOR 0,128,255,255 CAPTION 0," - REDIMENSIONNER UNE IMAGE -" p1=1: PICTURE p1: TOP p1,10: LEFT p1,0: WIDTH p1,373: HEIGHT p1,547 FILE_LOAD 1,f$ zoomh = .50: zoomv = .50 RedimImg(f$,373*zoomh,547*zoomv,fr$) p2=2: PICTURE p2: TOP p2,10: LEFT p2,WIDTH(p1)+10 WIDTH p2,WIDTH(p1)*zoomh: HEIGHT p2,HEIGHT(p1)*zoomh FILE_LOAD p2,fr$ END
SUB RedimImg(f$,w,h,fr$) ' Redimensionner l'image f$ (Jpg, Bmp) en wxh pixels, dans fr$ (obligatoirement Bmp) DIM_LOCAL f%,a$,k% f% = 1000: WHILE OBJECT_EXISTS(f%)=1: f%=f%+1: END_WHILE FORM f%: TOP f%,0: LEFT f%,0: WIDTH f%,w: HEIGHT f%,h: BORDER_HIDE f% PICTURE f%+1: PARENT f%+1,f%: FULL_SPACE f%+1: STRETCH_ON f%+1 FILE_LOAD 1001,f$: 2D_TARGET_IS 0 IMAGE f%+2: 2D_IMAGE_COPY f%+2,-8,-30,w-8,h-30: FILE_SAVE f%+2,fr$ DELETE f%: DELETE f%+2 END_SUB Si on veut essayer, il faut adapter les chemins de fichiers en tête, comme d'hab. Un exemple de réduction à 50% (l'image est bien enregistrée aux nouvelles dimensions): Et s'il vous plait, ne regardez que le principe, l'image elle-même n'a aucun intérêt, c'est tout ce que j'avais sous la main Il y a une contrainte, l'image résultante ne doit pas dépasser les dimensions de l'écran (ce qui dépasse est perdu). Je précise quand même que ça n'a d'intérêt que pour redimensionner une image ET l'enregistrer aux nouvelles dimensions. Si c'est uniquement visuel, il suffit d'utiliser le stretch_on dans un picture, évidemment. | |
|