Membres


Pas encore membre ?
inscrivez-vous ici

Connexion :
Login
Code
Mot de passe perdu ?
Liste des membres

detecter si le fichier est une image

Detecter si le fichier est une image


Detecter si le fichier est une image     Posté le 21/08/2008 à 01:51
Martos
Membre
martos
Site perso
65 posts
Inscrit le : 27/06/2007
Bonsoir,
novice, je commence a me mettre serieusement au php ces jours ci et parce que j'ai envie de bien dormir la nuit smiley j'aimerais connaitre une astuce:

Il y a t il un moyen simple avec l'emploi de la fonction readdir de detecter si le fichier lu (n')est (pas) une image ?

Je suspecte une possibilité de bricolage avec l'analyse des characteres de la chaine contenant le nom de fichier mais ca me parait lourd et j'ai pas trop le courage maintenant.

cordialement


________________________
Cash à l'octet
 
Réponse à : Detecter si le fichier est une image     Posté le 21/08/2008 à 09:33
sky
Administrateur
Avatar
Site perso
4188 posts
Inscrit le : 13/08/2003
Salut
Tu peux tester plusieurs choses :

L'extension : jpg, jpeg, gif ou png
Le type mime en fonction de l'extension : si le type est différent de l'extenxion, on peut se dire que le fichier est non seulement pas une image mais surement une fausse image.

Quoi qu'il en soit, l'extension est le test le plus simple.

Pour récuperer l'extension d'un fichier très simplement : http://www.graphiks.net/cours/php/81-recuperer-l-extension-d-un-fichier-en-php-simple.html

Sky

_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : Detecter si le fichier est une image     Posté le 21/08/2008 à 10:28
martos
Membre
Avatar
Site perso
65 posts
Inscrit le : 27/06/2007
Bonjour,
j'avais regardé la doc de php pour une fonction mais pas graphiks.net smiley

J'etais parti sur quelque chose comme ca pour avoir l'exension mais ca ne marche qu'avec un type d'extension
$ext = pathinfo($lien) //ca ne marche qu'avec un seul type d'extension
if $ext['extension'] !== '.jpg


Je teste ta fonction ce soir.

Cordialement

_______________________
Cash à l'octet
 
Réponse à : Detecter si le fichier est une image     Posté le 21/08/2008 à 13:32
martos
Membre
Avatar
Site perso
65 posts
Inscrit le : 27/06/2007
J'ai fait ca mais ca me renvoie une petite erreur

Parse error: syntax error, unexpected $end in /home.39/a/m/a/amassemo/www/listing.php on line 36

<?php
// on creer un tableau contenant une cle et une valeur contenant le chemin vers le fichier
$chemin=array(); 
$dir='./images/erg';
$dossier=opendir($dir);
while ((
$fichier=readdir($dossier)) !==false){  
$lien=$dir.'/'.$fichier//ne pas inclure les /. et /..
if ($lien !== $dir."/." && $lien !== $dir."/.." )
{
$ext pathinfo($lien,PATHINFO_EXTENSION) ;
//actualiser le tableau
switch ($ext) {
case 
"jpeg":
    
array_push($chemin,$lien);
    break;
case 
"jpg"
array_push($chemin,$lien);
    break;
case 
"png":
array_push($chemin,$lien);
    break;
case 
"gif":
array_push($chemin,$lien);
    break;
    
}
}
   echo 
'<pre>';
print_r($chemin);
   echo 
'</pre>'

// creer les thumbnails a partir du tableau
//afficher les thumbnails dans le code   
?>


_______________________
Cash à l'octet
 
Réponse à : Detecter si le fichier est une image     Posté le 21/08/2008 à 14:46
sky
Administrateur
Avatar
Site perso
4188 posts
Inscrit le : 13/08/2003
Il manque un } à la fin avant ton debug :
<?php
// on creer un tableau contenant une cle et une valeur contenant le chemin vers le fichier
$chemin=array(); 
$dir='./images/erg';
$dossier=opendir($dir);

while ((
$fichier=readdir($dossier)) !==false)
{

  
$lien=$dir.'/'.$fichier//ne pas inclure les /. et /..
  
if ($lien !== $dir."/." && $lien !== $dir."/.." )
  {
  
$ext pathinfo($lien,PATHINFO_EXTENSION) ;
  
//actualiser le tableau
  
switch ($ext) {
  case 
"jpeg":
      
array_push($chemin,$lien);
      break;
  case 
"jpg"
  
array_push($chemin,$lien);
      break;
  case 
"png":
  
array_push($chemin,$lien);
      break;
  case 
"gif":
  
array_push($chemin,$lien);
      break;
      
  }
  }

}

echo 
'<pre>';
print_r($chemin);
echo 
'</pre>'

// creer les thumbnails a partir du tableau
//afficher les thumbnails dans le code   
?> 


Sinon, voici une autre technique :
<?php
// on creer un tableau contenant une cle et une valeur contenant le chemin vers le fichier
$chemin=array(); 
$dir='./images/erg';
$dossier=opendir($dir);

// fichier a ne pas prendre en compte
$pasPrisEnCompte = array('.','..');

// extensions image
$extensionOk = array('jpg','jpeg','png','gif');


while((
$fichier=readdir($dossier)) !==false)
{

  
$lien $dir.'/'.$fichier;
  
  if(!
in_array($fichier,$pasPrisEnCompte))
  {
    
$ext pathinfo($lien,PATHINFO_EXTENSION);
    
    if(
in_array($ext,$extensionOk))
      
array_push($chemin,$lien);
  }

}

echo 
'<pre>';
print_r($chemin);
echo 
'</pre>'

// creer les thumbnails a partir du tableau
//afficher les thumbnails dans le code   
?>


Sky

_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : Detecter si le fichier est une image     Posté le 21/08/2008 à 16:51
martos
Membre
Avatar
Site perso
65 posts
Inscrit le : 27/06/2007
Ah oui...c'est pas faute d'avoir regarde le code mais j'avais pas vu smiley

C'est pas mal aussi ta technique utilisant deux tableaux je connaissais pas smiley

merci sky a bientot

_______________________
Cash à l'octet
 
Réponse à : Detecter si le fichier est une image     Posté le 21/08/2008 à 17:18
sky
Administrateur
Avatar
Site perso
4188 posts
Inscrit le : 13/08/2003
Et autre chose : quand on utilise un switch puis des case, on peux assembler tous les "case" qui vont avoir la même action de cette façon :

switch($ext)
{
case 'jpg':
case 'jpeg':
case 'png':
case 'gif':
echo 'Cest une image !';
break;
}

_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : Detecter si le fichier est une image     Posté le 21/08/2008 à 20:38
martos
Membre
Avatar
Site perso
65 posts
Inscrit le : 27/06/2007
en effet c'est moins lourd smiley

cordialement

_______________________
Cash à l'octet
 
Vous n'est pas connecté en temps que membre, parceque j'en ai marre du spam, SEUL les membres peuvent poster des messages sur le forum.

Nous  -  Plan du site  -  Informations légale  -  Contact  -  © Graphiks.net