1178 sujets

Accessibilité du Web

Bonsoir à tous,

Je posséde actuellement une base de données avec des images qui ont des tailles différentes et dont les utilisateurs upload.

Le probléme est que lorsque j'éxécute mon code PHP, j'avais définis les propriétés de mes images comme ceci l'affichage :

<img class='evenement' width='200' height='130' alt="test plumes" src="test.jpg" />


Mais vu la diversité de la taille des photos, je me retrouve dans l'impossibilité d'afficher correctement toute mes images.

C'est pourquoi, j'ai utilisé width:auto et height:auto mais je sais pertinnement que ce n'est pas autorisé.

Je souhaiterais si quelq'un avait une idée de comment je pouvais procéder avec que ces images s'affichent correctement ?

En attente de vos réponses.

Cordialement,
Modifié par doomer (31 Aug 2005 - 20:37)
salut.

je cherche une piste dans ce domaine aussi, mais je ne suis pas en PHP.
en premier lieu, connais tu une solution pour connaitre la taille de ton image en pixel ?
Ben pour l'instant non car en fait une société a créé un intranet et j'affiche certaines informations à partir de ces bases de données.

Je suis un peu perdu pour afficher mes images correctement.
je réfléchis tout haut .


en imaginent que tu connaisse la taille, perso je ferais ensorte de créer les styles nécessaire dans la page en fonction des retours de ta base.

un exemple en ASP mais c'est putot clair à convertir
la permière choses serait de faire la requete SQL qui va bien pour générer la liste de nom d'images


Set getImageList = Server.CreateObject("ADODB.Recordset")
SQL = "la requete"
getImageList.Open SQL,ConnDB,3,3


Ensuite faire une boucle autour de la requete pour utiliser le nom du fichier(-son extention) pour créer le style propre à chaque image

<style type="text/css">
While Not getImageList.EOF
#<%getImageList("NomImage")%> {
width : <%getImageList("ImageWidth")%>px;
height : <%getImageList("ImageHeight")%>px;
}
getImageList.MoveNext
Wend
</style>


du coup du génére un style propre à chaque image. mais il faufrais connaitre la taille et la maintenir dans la base.. Smiley langue
Bon ans ce cas là, il suffit de créer une fonction qui récupére les dimansions donc avec getimagesize puis aprés qui divisent par 2 la hauteur et la largeur par exemple.
doomer a écrit :
Bon ans ce cas là, il suffit de créer une fonction qui récupére les dimansions donc avec getimagesize puis aprés qui divisent par 2 la hauteur et la largeur par exemple.


Rien ne t'empèche de parcourir les fonctions d'image (lien donné plus haut) et d'utiliser "imagecopyresized()", ce que tu peux faire une fois pour toutes avec une page que tu lances à chaque chargement de nouvelles images pour prendre dans le dossier où tu stockes les originaux, copier en redimensionnant et placer dans un dossier de vignettes, ou bien redimensionner à chaque appel d'image mais avec plus de travail pour le serveur.
Ce ne serait pas plus simple dans ce cas de redimensionner des vignettes à la taille que tu veux lors de l'upload ?

Ensuite il suffit de savoir dans quel sens sont tes images (portrait ou paysage) pour écrire les bonnes propriétés ?

Ca évite trop de boulot au serveur pour des pages souvent affichées, ça uniformise les vignettes, ça fait le café, ça fait revenir la femme... Smiley biggol

Genre ce qui est écrit en exemple 2 là http://fr.php.net/manual/fr/print/function.imagecopyresampled.php

J'ai l'impression que ça va me servir ça moi...
Oui, j'aurais aussi plutôt pensé à un redimensionnement des iamges à l'affichage ...
Oui mais tu surcharges le serveur !

C'est pourquoi j'évoquais un script (j'ai écrit "une page" mais c'est un script ou une page) qui se lance après l'upload d'une nouvelle image (s'il y a upload depuis ton site) ou une page que tu demandes après un chargement du site par ftp.

Le traitement se fait ainsi une fois pour toutes, et cest l'occasion pour, avec le même script, charger quelques données en BDD : dimensions de l'image, poids de la vignette et de l'image grand format etc... qu'il te sera facile ensuite d'utiliser pour présenter les photos sur tes pages.