[Squeak-fr] redimensionner une image

Dreyfuss Pierre-André (EDU) pierre-andre.dreyfuss at edu.ge.ch
Mar 3 Juil 09:44:01 UTC 2007


RE Bonjour

Juste pour faire profiter les utilisateurs de E-toys de cette recherche de code voici comment faire un script permettant de charger une image depuis internet.
 En cliquant sur la palette , faire un dessin quelconque pour obtenir un SketchMorph.

Ouvrir le visualiseur de script de ce dessin (halo bleu) et tirer la brique script vide (empty script)

Tout en bas du menu du script choisir: ajouter un paramètre
 cliquer sur le triangle noir pour changer le type du paramètre, choisir texte
Cliquer sur le carré pour avoir la version texte du script  (Ce bouton  n'existe plus dans l'image OLPC, utiliser le menu et choisir :montrer la code smalltalk.)

Remplacer le texte ^self par le code suivant.

	self
		setGraphic: (ImageReadWriter
				formFromStream: (HTTPClient httpGet: t1))

On obtient une brique dans la catégorie script avec un paramètre abc


Remplacer le texte abc par l'URL voulu

Appuyer sur le point d'exclammation pour exécuter le code et obtenir l'image.

Amitiés
-------- Message d'origine--------
De: squeak-fr-bounces at lists.squeakfoundation.org de la part de Dreyfuss Pierre-André (EDU)
Date: mar. 03/07/2007 10:31
À: Squeak in french / Squeak en français
Objet : RE : [Squeak-fr] redimensionner une image
 
Bonjour 

ImageMorph semble très restrictive.
Utilise SketchMorph

im:=SketchMorph new.
im form:
 (Form fromBinaryStream: ((HTTPClient httpGet: 'www.k2r-riddim.net/public/images/avion.png'))).
im openInWorld.

im  height: 150
im width: 200

Pour cette classe, le Halo jaune marche , ce qui permet à L'utilisateur de redimensionner lui-même l'image.
C'est la classe utilisée par Squeak si l'on jette une image .png .jpeg ou .gif  dans Squeak.

Amitiés



-------- Message d'origine--------
De: squeak-fr-bounces at lists.squeakfoundation.org de la part de FERRERE Frédéric
Date: lun. 02/07/2007 17:28
À: Squeak in french / Squeak en français
Objet : Re: [Squeak-fr] redimensionner une image
 
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
_______________________________________________
Squeak-fr mailing list
Squeak-fr at lists.squeakfoundation.org
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr


-------------- section suivante --------------
Une pièce jointe non texte a été nettoyée...
Nom: non disponible
Type: application/ms-tnef
Taille: 4875 octets
Desc: non disponible
Url: http://lists.squeakfoundation.org/pipermail/squeak-fr/attachments/20070703/7aa619ac/attachment.bin


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