Page 1 sur 2

Propriétés jpg

Posté : 20 janv. 2011, 14:47
par Herve_be
Bonjour,
J'utilise en PHP le commandes suivantes pour mettre les noms de fichier dans une table
$dir = opendir("Images");
while($file = readdir($dir))
$tab[] = array($file);
Il s'agit de fichiers jpg.

J'aimerais savoir comment je peux obtenir les propriétés de chaque fichier, notamment ses dimensions en pixels.

Merci d'avance

Re: Propriétés jpg

Posté : 20 janv. 2011, 15:43
par xTG
Les fonctions stat() et getimagesize(). :)

Re: Propriétés jpg - Résolu

Posté : 20 janv. 2011, 17:02
par Herve_be
getimagesize est bien ce que je cherchais
Merci pour la réponse rapide et efficace.
Rudy

Re: Propriétés jpg

Posté : 20 janv. 2011, 17:05
par stealth35
et utilise glob pour lister tes fichier ca sera plus simple

Re: Propriétés jpg

Posté : 20 janv. 2011, 17:24
par Herve_be
Merci pour l'info mais je n'ai pas compris comment utiliser glob.
Pour l'instant je fais comme ceci

//Sort function
function cmp($a,$b)
{
return ($a[0] < $b[0]) ? -1 : 1;
}

$dir = opendir("Images");

// fill array with files names
while($file = readdir($dir))
{
if(substr($file,-3)=="jpg") $tab[] = array($file);
}

// sort array
usort($tab, "cmp");

et j'utilise ensuite l'array pour afficher les images, leurs noms et leurs tailles.
Comment faire avec glob si c'est plus simple ?

Re: Propriétés jpg

Posté : 20 janv. 2011, 19:12
par xTG
$tableau = glob("/dossier/*.jpg");
Tous les fichiers jpg (et uniquement eux) du dossier. ;)

Re: Propriétés jpg

Posté : 20 janv. 2011, 19:28
par Herve_be
Qu'est-ce qui cloche ?

$tab = glob("/Images/*.jpg");
usort($tab, "cmp");

donne Warning: usort() expects parameter 1 to be array, boolean given

et

$tab = glob("Images/*.jpg");
usort($tab, "cmp");
foreach($tab as $elem)
{
list($width, $height) = getimagesize("Images/".$elem[0]);

donne Warning: getimagesize(Images/I): failed to open stream: No such file or directory

Re: Propriétés jpg

Posté : 20 janv. 2011, 20:32
par moogli
yop,

a priori glob retourne false, c'est généralement parce que le chemin n'est pas bon ou le masque).

le / indique la racine du systeme de fichier et nom la racine de ton site web, enlève le ou ajouter de .. pour utiliser un chemin relatif à ta position ou utilise le chemin depuis la racine (genre /var/www/toi/tonsite/images/*.jpg).

@+

Re: Propriétés jpg

Posté : 21 janv. 2011, 10:45
par Herve_be
Bonjour,

Effectivement
$tab = glob("/Images/*.jpg");
usort($tab, "cmp"); ne fonctionne pas probablement parce que $tab = false

Mais avec
$tab = glob("Images/*.jpg"); où "Images" est le chemin relatif à la position du fichier PHP.
usort($tab, "cmp"); ne rouspète pas donc je suppose que $tab est bien rempli
foreach($tab as $elem) fonctionne aussi d'ailleurs

alors pourquoi getimagesize("Images/".$elem[0]); ne fonctionne pas ?
si j'ai bien compris le message le premier $elem[0]) = "I" : d'où vient ce "I" ?

Re: Propriétés jpg

Posté : 21 janv. 2011, 10:58
par xTG
Certaines fonctions PHP ne fonctionnent qu'avec un chemin relatif et d'autres avec un chemin absolu. ;)

Re: Propriétés jpg

Posté : 21 janv. 2011, 11:11
par Herve_be
Certaines fonctions PHP ne fonctionnent qu'avec un chemin relatif et d'autres avec un chemin absolu. ;)
Peut-être mais ça ne me dit pas comment je dois utiliser glob.
Donc je garde opendir / readdir qui fonctionnent bien.
Et encore merci pour getimagesize.

Re: Propriétés jpg

Posté : 21 janv. 2011, 11:56
par xTG
glob() renvoie le chemin complet, et pas seulement le nom du fichier.

Re: Propriétés jpg

Posté : 21 janv. 2011, 12:10
par Herve_be
Est-ce que je comprends bien que je devrais utiliser
getimagesize($elem[0]);
au lieu de
getimagesize("Images/".$elem[0]);

J'affiche les images dans une table avec le nom du fichier sous chaque image; voir ici http://www.rudyv.be/Aquarium/Images.php
Ce qui m'ennuie alors c'est que si la table contient le chemin complet ça va être trop long sous l'image.
Ou alors je dois extraire le nom du fichier xxx.jpg du chemin complet avec un substr.

Y a-t-il vraiment un avantage à utiliser glob plutôt que opendir / readdir ?

Re: Propriétés jpg

Posté : 21 janv. 2011, 12:13
par stealth35
c'est sur $elem tout cours qui faut le faire. glob est plus simple que le reste ton oui c'est un avantage

Re: Propriétés jpg

Posté : 21 janv. 2011, 12:17
par moogli
salut,

plus simple d'utilisation tu a directement les élément voulus dans le tableau sans autre tri.

Par contre suivant ton utilisation effectivement tu va peut être devoir faire un peut de ménage dans ce qui est retourné. regarde la fonction basename et consor :)


@+