[Squeak-fr] redimensionner une image

FERRERE Frédéric frederic.ferrere at free.fr
Lun 2 Juil 15:28:34 UTC 2007


jchauvea at etu.info.unicaen.fr a écrit :
> Bonjour et merci pour vos réponses.
> Cependant, cette méthode redimensionne bien l'image mais sans dissocier 
> la longueur de la largeur. Je souhaiterais modifier longueur et largeur 
> indépendamment.
> Merci.
> Jérôme.
> 

en regardant le code de la méthode magnify:by:smoothing: de la classe Form
et en l'adaptant un petit peu on arrive à quelque chose qui semble fonctionner.

Dans l'exemple ci dessous, ImageMorph contient une image de 127x57.
Je change la dimension de l'image en rajoutant 800 sur la lageur et 10 sur la hauteur,
ce qui donne une image de 927x67.

|img newForm|
img := ImageMorph new.
newForm := Form extent: (img image extent + (800 at 10)) depth:(img image depth).
(WarpBlt current toForm: newForm) sourceForm: (img image);	
		colorMap: (img image colormapIfNeededFor: newForm);
		 cellSize: 1;
		 combinationRule: 2;
		 copyQuad: img image boundingBox innerCorners toRect: newForm boundingBox.
img image: newForm.
img openInWorld

Par contre il y a un mystère : le code fonctionne, mais j'ai du modifier la valeur de combinationRule,
qui dans le code de la fonction magnify:by:smoothing: est 3.

Cette valeur (3) n'apparait d'ailleur pas dans la documentation de la classe BitBlt concernant les valeurs de combinationRule.
Et la valeur 2 que j'ai choisi est un pur hasard ...

Je ne serais pas contre une bonne explication des classes WarpBlt et BitBlt :)

Cordialement,


-- 

Frédéric Ferrère


Plus d'informations sur la liste de diffusion Squeak-fr