adapter une image à la taille d'un div

voici un soucis sur lequel je me casse les dents depuis de nombreuses heures…
peut-être pourrez vous m’aider ?

voici ce que je veux faire: j’aimerai adapter la taille d’une image à un div, dont la taille est fixée en pourcentage et qui varie donc en fonction de la résolution de l’écran.
le problème, c’est que mon image est du genre [(#FICHIER|image_reduire{170px,y})] où la taille de l’image est fixée par le filtre |****image_reduire{ }. donc pas du tout adaptable; lorsque je réduis la taille de mon écran, l’image sors de son div, et donc de sons cadre…

J’ai un problème similaire lorsque je veux organiser les images associées à un portfolio dans un tableau:

[(#COMPTEUR_BOUCLE|alterner{'','','','',''})] [(#COMPTEUR_BOUCLE|alterner{'','','','',''})] [(#TOTAL_BOUCLE|alterner{'','', '','','',})]
[(#LOGO_DOCUMENT|#URL_DOCUMENT||image_reduire{150,100})]
[(#TITRE)]
[(#DESCRIPTIF)]

j’ai fixé la taille de chaque cellule du tableau à 20% de la largeur totale mais comme la taille des images est fixée par le filtre **|**image_reduire{ } si la largeur des images devient plus grande que celle des 20% de la longueur totale du div prévue, forcemment, ça dépasse…

Quelqu’un aurait-il des pistes pour faire en sorte que ces images soient redimensionnées en même temps que le div en question?

Merci d’avance
SEB.

Juste une idée SI tu peux te passer du tableau (les tableaux n'amènent que des ennuis...) : et si tu redimensionnais tes images par l'intermédiaire de tes feuilles de style en fixant des pourcentages à une classe attribuée à tes images ?

SEB a écrit :

voici un soucis sur lequel je me casse les dents depuis de nombreuses heures...
peut-être pourrez vous m'aider ?

voici ce que je veux faire: j'aimerai adapter la taille d'une image à un div, dont la taille est fixée en pourcentage et qui varie donc en fonction de la résolution de l'écran.
le problème, c'est que mon image est du genre *[(#FICHIER|image_reduire{170px,y})] *où la taille de l'image est fixée par le filtre *|**image_reduire{ }*. donc pas du tout adaptable; lorsque je réduis la taille de mon écran, l'image sors de son div, et donc de sons cadre...

J'ai un problème similaire lorsque je veux organiser les images associées à un portfolio dans un tableau:

                <table width="100%">
                    <BOUCLE_portfolio(DOCUMENTS){id_article}{mode=document}{extension==jpg|png|gif}{doublons}>
                                       [(#COMPTEUR_BOUCLE|alterner{'<tr>','','','',''})]
                        <td width="20%" valign="top">[(#LOGO_DOCUMENT|#URL_DOCUMENT||image_reduire{150,100})]
                        <br><b>[(#TITRE)]</b>
                        <br><small>[(#DESCRIPTIF)]</small></td>
                        [(#COMPTEUR_BOUCLE|alterner{'','','','','</tr>'})]
                    </BOUCLE_portfolio>
                    [(#TOTAL_BOUCLE|alterner{'<td></td><td></td></tr>','<td></td></tr>', '','','',})] </table>

j'ai fixé la taille de chaque cellule du tableau à 20% de la largeur totale mais comme la taille des images est fixée par le filtre *|**image_reduire{ } *si la largeur des images devient plus grande que celle des 20% de la longueur totale du div prévue, forcemment, ça dépasse...

Quelqu'un aurait-il des pistes pour faire en sorte que ces images soient redimensionnées en même temps que le div en question?

Merci d'avance
SEB.* *

------------------------------------------------------------------------

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : FAQ webmestre - SPIP

SEB a écrit :

voici un soucis sur lequel je me casse les dents depuis de nombreuses heures...
peut-être pourrez vous m'aider ?

voici ce que je veux faire: j'aimerai adapter la taille d'une image à un div, dont la taille est fixée en pourcentage et qui varie donc en fonction de la résolution de l'écran.
le problème, c'est que mon image est du genre *[(#FICHIER|image_reduire{170px,y})] *où la taille de l'image est fixée par le filtre *|**image_reduire{ }*. donc pas du tout adaptable; lorsque je réduis la taille de mon écran, l'image sors de son div, et donc de sons cadre...

J'ai un problème similaire lorsque je veux organiser les images associées à un portfolio dans un tableau:

                <table width="100%">
                    <BOUCLE_portfolio(DOCUMENTS){id_article}{mode=document}{extension==jpg|png|gif}{doublons}>
                                       [(#COMPTEUR_BOUCLE|alterner{'<tr>','','','',''})]
                        <td width="20%" valign="top">[(#LOGO_DOCUMENT|#URL_DOCUMENT||image_reduire{150,100})]
                        <br><b>[(#TITRE)]</b>
                        <br><small>[(#DESCRIPTIF)]</small></td>
                        [(#COMPTEUR_BOUCLE|alterner{'','','','','</tr>'})]
                    </BOUCLE_portfolio>
                    [(#TOTAL_BOUCLE|alterner{'<td></td><td></td></tr>','<td></td></tr>', '','','',})] </table>

j'ai fixé la taille de chaque cellule du tableau à 20% de la largeur totale mais comme la taille des images est fixée par le filtre *|**image_reduire{ } *si la largeur des images devient plus grande que celle des 20% de la longueur totale du div prévue, forcemment, ça dépasse...

Quelqu'un aurait-il des pistes pour faire en sorte que ces images soient redimensionnées en même temps que le div en question?

Merci d'avance
SEB.* *
------------------------------------------------------------------------

Bonjour,
a mon avis, y a pas de solution a ton probleme, pas de solution propre en tout cas...
La largeur de ton div depend de la resolution du poste client, cette information n est disponible que sur le poste client (pas sur le serveur) il te faudrait donc redimmensionner ton image en script client (javascript) ce qui n est pas possible (a moins qu une librairie genre ajax sache du re-echantillonnage d image, mais je n en connais pas). Tu peux simuler un redimmensionnement, mais l image ne sera pas recree, juste etiree ou reduite comme un viel elastique avec un rendu tres mediocre (les navigateurs internet ne sont pas prevus pour reechantillonner les images).
Y a moyen de recuperer la resolution du client cote serveur puis recalculer l image avec les filtres image (qui eux savent faire) puis la reposter sur le poste client, mais c est lourd a mettre en place, ca force a recharger la page, et ca implique que le serveur va devoir creer une image par resolution (et peut y en avoir beaucoup), le serveur et donc ton hebergeur risque de pas aimer...
Alors comment faire ?
proverbe shadok, "si y a pas de solution, c est qu il n y a pas de probleme" en gros, faut savoir s adapter au contrainte du support, les graphistes de Lascaux ont pas tentes de faire de l animation vectorielle sur les parois de la grotte, z ont fait autre chose...
Peut etre peux tu par exemple afficher ton image en background en la positionnant a 50% 50% au moins ton image ne depassera pas de ton div, elle sera par contre soit tronquee sur les bords, soit centree au milieu avec du vide ou la couleur de ton choix sur les bords...

triton

triton a écrit :

a mon avis, y a pas de solution a ton probleme, pas de solution propre en tout cas...

Mais si y'a une solution en css :slight_smile:
Essaye ça, puis tu adaptes après.

Dans le head :

<style type="text/css">

div.pourcent {
    float:left;
    width:20%;
    }

.redimensionner {
    width:100%;
    height:100%;
    }

</style>

Dans le body (exemple avec 3 docs) :

<BOUCLE_essai(DOCUMENTS){id_article}{mode=document}{extension==jpg|png|gif}{0,3}>
<div class="pourcent">
<p><img src="#URL_DOCUMENT" class="redimensionner" alt="essai" />
[<br /><strong>(#TITRE)</strong>]
[<br />(#DESCRIPTIF)]</p></div>
</BOUCLE_essai>

Ca devrait marcher, non ?

Damien a écrit :

triton a écrit :

a mon avis, y a pas de solution a ton probleme, pas de solution propre en tout cas...
    
Mais si y'a une solution en css :slight_smile:
Essaye ça, puis tu adaptes après.

Dans le head :

<style type="text/css">

div.pourcent {
    float:left;
    width:20%;
    }

.redimensionner {
    width:100%;
    height:100%;
    }

</style>

Dans le body (exemple avec 3 docs) :

<BOUCLE_essai(DOCUMENTS){id_article}{mode=document}{extension==jpg|png|gif}{0,3}>
<div class="pourcent">
<p><img src="#URL_DOCUMENT" class="redimensionner" alt="essai" />
[<br /><strong>(#TITRE)</strong>]
[<br />(#DESCRIPTIF)]</p></div>
</BOUCLE_essai>

Ca devrait marcher, non ?

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : FAQ webmestre - SPIP

.

oui, mais non, ca redimensionne pas vraiment, enfin si, mais genre a la hache, ca fait tout pareil que si en html tu modifies le height et width dans le tag img... Les navigateurs ne font pas d interpolation d image, ils font ce qu ils peuvent, mais si une image doit passer d une taille de 20% de 1024 a 20% de 640 le resultat va etre des gros pixels tout moche... enfin, ca peut faire genre
aussi...

Effectivement, c’est une bonne idée, ça fonctionne très très bien pour adapter mon image à mon div
tant pis si c’est pas un "vrai rééchantillonnage, ça me convient :o)

je vais voir comment adapter cela à mon autre problème, le tableau…

a vrai dire, j’ai bien retenu de conseil de passer outre les tableaux, et je le fais autant que possiblem mais là, je n’ai pas trouvé d’autre solution, l’idée étant de remplir avec des photos un tableau de 5 colonnes.

un grand merci en tout cas! :smiley:

@Triton: merci pour ta réponse, tes explications et ton proverbe shadock ! je le garderai dans un coind de ma tête ;o)
c’est sympa ;o)

Damien a écrit :

triton a écrit :

  
a mon avis, y a pas de solution a ton probleme, pas de solution propre 
en tout cas...
    

Mais si y'a une solution en css :)
Essaye ça, puis tu adaptes après.

Dans le head :

<style type="text/css">

div.pourcent {
		float:left;
		width:20%;
		}

.redimensionner {
		width:100%;
		height:100%;
		}

</style>

Dans le body (exemple avec 3 docs) :

<BOUCLE_essai(DOCUMENTS){id_article}{mode=document}{extension==jpg|png|gif}{0,3}>
<div class="pourcent">
<p><img src="#URL_DOCUMENT" class="redimensionner" alt="essai" />
[<br /><strong>(#TITRE)</strong>]
[<br />(#DESCRIPTIF)]</p></div>
</BOUCLE_essai>

Ca devrait marcher, non ?