Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Afficher une image dans un objet fixé, mais sans la déformer ou la couper...

Envoyé par : Raphael

Date : 23/06/2008 12:42

Bonjour, pour moi c'est toujours la galère d'afficher des images dans mes interfaces... A chaque fois je taille correctement mes images sinon j'ai toujours des problèmes.

Là, je n'ai pas le choix donc je voudrais fouiller un peu le problème.

J'ai un PNG de 128x128, je voudrais pouvoir l'afficher dans un <image> et dans un <toolbarbutton>.

Alors, j'ai tenté des width/height, mais l'image déborde lorsque je spécifie par exemple 96/96...

J'ai tenté des style="max-width..." ou max-height ou les 2 mais ça marche pas trop non plus, j'ai joué avec du overflow, non plus... soit ça déborde, soit c'est coupé, soit c'est déformé

Bref, j'y arrive pas pourtant mon problème est tout simple :

  • J'ai la photo d'un utilisateur
  • Je veux l'afficher dans un image(src) ou toolbarbutton(image) sachant que les dimensions de ces objets ont des contraintes. Je veux qu'elle s'affiche au maximum de sa taille sans être déformée, coupée ou qu'elle déborde

C'est simple mais pas moyen d'y arriver, quelqu'un a une idée ?

Merci.

# Re: Afficher une image dans un objet fixé, mais sans la déformer ou la couper...

Envoyé par : judu

Date : 23/06/2008 16:52

Le premier paragraphe est juste à titre indicatif, lis directement le EDIT

As-tu essayé de mettre ton image dans une box puis de rajouter un spacer avec un -moz-box-flex à 10 ? ça va obliger ton image à ne pas s'étaler. Et ton image tu peux même mettre un -moz-box-flex à 0 si tu veux (enfin je crois :/)

EDIT : en fait après un test, je me rends compte que j'étais bête de rajouter le spacer... Il suffit de mettre ton image avec un -moz-box-flex:0; Et elle ne bougera plus; (Si ça ne fonctionne pas sur l'image directement, enferme la dans une box).

# Re: Afficher une image dans un objet fixé, mais sans la déformer ou la couper...

Envoyé par : Raphael

Date : 23/06/2008 18:23

Merci de l'astuce, je la note mais ça marche pas top... peut-être étais-je trop flou ?

  • Imagine une interface de Messagerie instantannée :
<hbox>
			<image id="avatar" />
			<vbox flex="1">
				<textbox id="name" label="Nom" />
				<hbox>
					<toolbarbutton id="status_icon" class="status_unavailable" disabled="true" />
					<menulist id="status" onselect="setPresence();" flex="1">
						<menupopup>
							 <menuitem value="available" label="&status.available;" />
							<menuitem value="away" label="&status.away;" />
							<menuitem value="dnd" label="&status.dnd;" />
							<menuitem value="unavailable" label="&status.unavailable;" selected="true" />
						</menupopup>
					</menulist>
				</hbox>
				<textbox id="mood" value="" label="Phrase d'état" />
			</vbox>
		</hbox>

J'ai donc à gauche un Avatar qui fait 3 lignes, et à droite l'un au-dessous de l'autre : Le nom, l'état, la phrase d'état.

L'image originale est plus grosse que 3 lignes en hauteur. Si je mets -moz-box-flex, et bien mon image est affichée dans sa vraie taille et casse la présentation.

Je voudrais que la hauteur de l'image s'aligne avec la place que représente ces 3 lignes... et que la largeur s'ajuste pour ne pas déformer l'image.

Et si vraiment ce n'est pas possible, j'aimerais spécifier un couple width/height dans lequel cantonner l'image genre 96/96, mais sans déformer l'image si cette dernière n'est pas carrée...

Est-ce réalisable ?

# Re: Afficher une image dans un objet fixé, mais sans la déformer ou la couper...

Envoyé par : judu

Date : 24/06/2008 13:39

mmm...

Tu peux tenter : "max-height : 3em;" 1em normalement, c'est la hauteur/largeur d'un symbole : Regarde ici ;)

# Re: Afficher une image dans un objet fixé, mais sans la déformer ou la couper...

Envoyé par : Raphael

Date : 24/06/2008 18:59

Déjà essayé avec les Max-height... Effectivement, la hauteur ne dépasse plus... mais l'image n'est pas redimensionné, elle est déformé !

si j'ai une 128x128 que je mets max-height: 96px;... Je me retrouve avec une image aplati en 128x96... =/ et non une image en 96x96.

Bon sang, c'est incroyable, ça doit être un problème tout bête, je refuse de penser que Mozilla ou CSS ne permette pas une chose aussi simple que celle de faire s'ajuster une image à son environnement, sans la déformer ! Il doit forcément y avoir une solution mais je l'ai pas encore trouvé.

Un énorme merci à celle ou celui qui pourra m'aider car visuellement c'est vraiment moche... Et sinon va falloir que je déploie l'artillerie lourde pour faire plusieurs tailles d'avatars, etc... la mort quoi.

# Re: Afficher une image dans un objet fixé, mais sans la déformer ou la couper...

Envoyé par : Paul Rouget

Date : 25/06/2008 10:13

Pour ce genre de chose, je te conseille fortement de plutot embarquer ton image dans du code html, beaucoup plus adapté.

# Re: Afficher une image dans un objet fixé, mais sans la déformer ou la couper...

Envoyé par : Raphael

Date : 25/06/2008 17:42

Ok, enfin je sais pas si mon interface de client Jabber s'y prête énormément, je verrai de ce côté-là, merci du tuyau.

# Re: Afficher une image dans un objet fixé, mais sans la déformer ou la couper...

Envoyé par : Paul Rouget

Date : 26/06/2008 10:11

mais tu peux embarquer du html dans un xul:box ou dans un xul:button. Je pense qu'utiliser le <html:img> (peut être à embarquer dans un <html:div> plutot que le <xul:image>, pourrait rendre les choses beaucoup plus simples.

# Re: Afficher une image dans un objet fixé, mais sans la déformer ou la couper...

Envoyé par : Raphael

Date : 26/06/2008 18:43

Et dans ce cas, comment y accéder, changer la photo ? URL chrome ? file:// ?

Un petit exemple d'image avec un ID pour pouvoir changer l'image dynamiquement ?

Désolé de poser des questions aussi "bateaux".

# Re: Afficher une image dans un objet fixé, mais sans la déformer ou la couper...

Envoyé par : Paul Rouget

Date : 26/06/2008 21:05

via un setAttribute. Ça ne change absolument rien. C'est juste qu'au lieu de mettre des balises XUL, tu mets des balises HTML, genre:

<vbox>
  <html:div>
    <html:img src=""/>
  </html:div>
</vbox>

C'est tout :)

# Re: Afficher une image dans un objet fixé, mais sans la déformer ou la couper...

Envoyé par : Raphael

Date : 27/06/2008 18:24

J'ai essayé malheureusement j'ai toujours le même type de problème.

Si je spécifie une hauteur ou une largeur... l'image n'adapte pas l'autre valeur en fonction du ratio, mais se déforme : garde sa longueur d'origine non modifiée, et s'applatie ou s'étire selon la longueur donnée dans l'autre sens.

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.