Page 1 sur 1

Récupérer la taille d'une photo

Posté : 26 mars 2018, 21:00
par yoann38
Bonjour,
J'affiche une photo issu de ma bdd ( réelement cette photo est enregistré sur une page sur un site autre que le mien ), un site d'affiliation.

Problème c'est que la photo est inexistante mais il y a bien un lien.
Donc je cherche à savoir comment faire que si l'image que j'affiche est inférieur par exemple à 1px alors j'affiche une photo de remplacement.

Je recupére la photo ainsi :
<a href="#" title="'.strtolower($ligne['titre']).' '.strtolower($ligne['city']).'" class="product-image">
<img class="img-responsive thumbnai post-img" src="'.$ligne['photo'].'" alt="'.ucfirst(strtolower($ligne['titre'])).'" title="'.strtolower($ligne['titre']).' - '.ucfirst(strtolower($ligne['city'])).'">
</a>
Faire la condition c'est bon pas de soucis mon problème est de savoir comment récupérer la hauteur ou la largeur de cette "photo"....

Merci à vous
PS: Le lien en question quand il n y a pas de photo affiche un message type 404 peut etre passé par la si plus simple ou moins gourmand en ressource je ne sais pas..

Re: Récupérer la taille d'une photo

Posté : 27 mars 2018, 01:13
par @rthur
Hello,

Voici la fonction que j'utilise qui va vérifier si l'url fournie fonctionne ou pas.
function url_exists($url) {
	$http_headers = @implode(';', get_headers($url));
	return preg_match("`HTTP[^;]+\s200\s`",$http_headers);
}


Si tu veux connaitre la taille d'une image, tu peux utiliser la fonction getimagesize()
list($width, $height) = getimagesize($url_image);
Mais je ne te la recommande pas car elle sera plus gourmande en ressource si c'est juste pour vérifier l'existence.
En effet, pour vérifier l'existence, la fonction get_headers() va juste demander les entêtes sans télécharger le fichier, alors que getimagesize() va devoir télécharger l'image en temporaire sur ton serveur pour calculer la taille donc ça va prendre + de temps et c'est plus gourmand en ressource :)

Re: Récupérer la taille d'une photo

Posté : 29 mars 2018, 07:10
par yoann38
Bonjour, le coup de la fonction effectivement c'est pas trop mal.
Par contre je me demandé si je pouvais récupérer la taille de la div en js puis via une simple condition faire la suite de mon cote

Exemple:
si la div.photo est inférieur à 10px alors NULL;

C'est possible de récupérer ca en js et l'exploiter en PHP ?
Merci pour ton retour

Re: Récupérer la taille d'une photo

Posté : 29 mars 2018, 09:31
par @rthur
En fait ça dépend du traitement que tu veux faire, mais si c'est un traitement PHP, tu as plutôt intérêt à faire la détection de la taille/existence de ton image en PHP et pas d'attendre que le navigateur d'un de tes utilisateur te renvoie une info spécifique à son navigateur pour faire quelque chose.
Notamment si il a une connexion avec un très mauvais débit, l'image peut mettre beaucoup de temps à charger, ou si il désactive l'affichage des images, ou si il a une tablette braille, la taille de ton image va être de 0px mais cela ne voudra pas forcément dire que l'image n'existe pas.

Mais si malgré ça tu penses que c'est pertinent, tu peux effectivement récupérer la taille d'une div en javascript (avec Element.width() en jsquery ou Element.clientWidth en pure JS), et ensuite tu peux renvoyer cette info via un appel Ajax à ton serveur PHP pour qu'il déclenche un traitement asynchrone.