Infos fonction EXIF

Discussion dans 'Web, design' créé par Arnoz, 30 Mai 2005.

Statut de la discussion:
Fermée.
  1. Offline
    Arnoz Touriste
    Je voudrais savoir ce que je devrais mettre comme code dans une page PHP qui affiche une image JPG (avec option next et suivante) pour que j'ai quelques informations primaires du cliché. Genre taille, poids, et en tout cas heure.

    Je sais que c'est la fonction EXIF, mais je pige pas trop comment configurer tout ça.

    Merci
    Arnoz, 30 Mai 2005
    #1
  2. Offline
    j0k3r_n0ir ex membre
    Salut,

    Tu as la taille d'un fichier qui peut être donné grâce à la fonction file_size.
    Tu as aussi la fonctionne stat qui te retourne tout un tas d'informations sur un fichier.
    Pour la taille de l'image, tu peux regarder du coté de getimagesize.
    j0k3r_n0ir, 31 Mai 2005
    #2
  3. Offline
    Arnoz Touriste
    Merci je vais tester tout ça.
    Arnoz, 31 Mai 2005
    #3
  4. Offline
    Arnoz Touriste
    Bon ben j'ai un peu essayé, mais c'est pas terrible. Soit, avec les fonctione EXIF, je me tape un million d'infos plutôt inutiles, soir avec d'autres fonction, je n'ai pas exactement ce que j'attends.

    De fait, j'aimerais pouvoir afficher:
    -Date du cliché
    -Dernière modif du cliché
    -Nom du fichier
    -Titre du fichier
    -Taille
    -Résolution (dimension)
    -Type de fichier

    Et malheureusement, je ne sais pas comment parametrer les fonctions afin qu'il n'y ait que ces infos qui s'affichent...
    Arnoz, 31 Mai 2005
    #4
  5. Offline
    sebge2 Touriste
    la taille :

    imagesx -- Retourne la largeur d'une image
    imagesy -- Retourne la hauteur de l'image
    getimagesize -- Retourne la taille d'une image

    ensuite pour les modif tu as avec ce qu'on t'a donné plus haut... reste plus que la date du cliché donné par l'appareil photo :wink:

    http://be.php.net/manual/fr/ref.image.php

    je chercherai plus tantot ca m'interesse aussi :)
    sebge2, 31 Mai 2005
    #5
  6. Offline
    Arnoz Touriste
    Moi ça m'énerve de coder, en plus je suis carrément sous-développé pour ça. Donc si tu trouves, c'est hyper cool. Sinon j'oublierai...
    Arnoz, 31 Mai 2005
    #6
  7. Offline
    sebge2 Touriste
    Code:
    function getTypePicture($num){
    	$type="";
    	switch($num){
    		case 1 : $type="GIF";
    		case 2 : $type="JPG";
    		case 3 : $type="PNG";
    		case 4 : $type="SWF";
    		case 5 : $type="PSD";
    		case 6 : $type="BMP";
    		case 7 : $type="TIFF"; 
    		case 8 : $type="TIFF";
    		case 9 : $type="JPC";
    		case 10 : $type="JP2"; 
    		case 11 : $type="JPX";
    		case 12 : $type="JB2";
    		case 13 : $type="SWC";
    		case 14 : $type="IFF";
    	}
    	return $type;
    }
    Code:
    function getInformationAboutAPicture($pictureLocalization,$namePicture){
    	$informationPicture[0]=$namePicture;	
    	// list($width,$height,$type,$attr);
    	list($informationPicture[1], $informationPicture[2], $informationPicture[3], $informationPicture[4]) = @getimagesize($pictureLocalization);	
    	$informationPicture[3]=getTypePicture($informationPicture[3]);	
    	$informationPicture[5]=@filesize($pictureLocalization); // taille de l'image
    	$informationPicture[5]=date ("F d Y H:i:s.", @filemtime($pictureLocalization)); // date de modification
    	$informationPicture[6]=substr($namePicture,0,strrpos($namePicture,".")); // nom sans l'extension
    		
    	return $informationPicture;
    }
    
    Code:
    $information=getInformationAboutAPicture("Folder.jpg","Folder.jpg");
    for($i=0;$i<count($information);$i++) echo $information[$i]."<br>";
    voila manque plus que la date de prise de la photo :wink:
    sebge2, 31 Mai 2005
    #7
  8. Offline
    alan Elite
    filectime ( $pictureLocalization )

    Code:
    <?
    function getInformationAboutAPicture($pictureLocalization,$namePicture){
    	$informationPicture[0]=$namePicture;	
    	// list($width,$height,$type,$attr);
    	list($informationPicture[1], $informationPicture[2], $informationPicture[3], $informationPicture[4]) = @getimagesize($pictureLocalization);	
    	$informationPicture[3]=getTypePicture($informationPicture[3]);	
    	$informationPicture[5]=@filesize($pictureLocalization); // taille de l'image
    	$informationPicture[6]=date ("F d Y H:i:s.", @filemtime($pictureLocalization)); // date de modification
    	$informationPicture[6]=date ("F d Y H:i:s.", @filectime($pictureLocalization)); // date de création
    	$informationPicture[8]=substr($namePicture,0,strrpos($namePicture,".")); // nom sans l'extension
    		
    	return $informationPicture;
    }
    ?>
    alan, 31 Mai 2005
    #8
  9. Offline
    Arnoz Touriste
    J'essayerai tout ça demain, j'ai pas le temps là. En tout cas un tout tout grand merci!
    Arnoz, 31 Mai 2005
    #9
  10. Offline
    sebge2 Touriste
    non filectime c'est pour voir la modification du fichier ... ici nous voulons la date du cliché ... que l'appareil photo met en propriété sur l'image ... les meme information concernant la marque de l'appareil etc :wink:
    sebge2, 1 Juin 2005
    #10
  11. Offline
    sebge2 Touriste
  12. Offline
    alan Elite
    c pas la modification du fichier, mais la modification des permissions du fichier ... et en général tu change pas souvent tes permissions ... moi c'est ce que j'ai fait .. mais c'est vrai que c'est pas trop mais jpense que je vais bientot changer ;;)

    Code:
    $exif = exif_read_data ($pictureLocalization,0,true);
    $informationPicture[6]=date ("F d Y H:i:s.",$exif[FILE][FileDateTime]); // date de création 
    jpense que ca ca devrai etre bon!! ;)
    alan, 1 Juin 2005
    #12
  13. Offline
    Arnoz Touriste
    Donc là il y a tout ce que j'avais demandé?
    Super, merci!!

    Mais euh... Comment je fais pour afficher les résultats dans la page Des echos ou quoi?! :oops: :D
    Arnoz, 1 Juin 2005
    #13
  14. Offline
    alan Elite
    alan, 1 Juin 2005
    #14
  15. Offline
    Arnoz Touriste
    Je m'occupe de ça plus tard, je vous tien au courant. Encore merci!
    Arnoz, 1 Juin 2005
    #15
  16. Offline
    Arnoz Touriste
    Grâce à vous, j'y suis presque. Mais il me reste 2-3 stress... si vous pouviez m'aider :)

    Le code:
    Code:
    function getTypePicture($num){
       $type="";
       switch($num){
          case 1 : $type="GIF";
          case 2 : $type="BMP";
          case 3 : $type="JPG";
       }
       return $type;
    }
    function getInformationAboutAPicture($pictureLocalization,$namePicture){
       $informationPicture[0]=substr($namePicture,0,strrpos($namePicture,".")); // nom sans l'extension  
       list($informationPicture[1], $informationPicture[2], $informationPicture[3], $informationPicture[4]) = @getimagesize($pictureLocalization);   
       $informationPicture[5]=getTypePicture($informationPicture[5]);   
       $informationPicture[6]=@filesize($pictureLocalization); // taille de l'image
       $informationPicture[7]=date ("F d Y H:i:s.", @filemtime($pictureLocalization)); // date de modification
       $informationPicture[8]=date ("F d Y H:i:s.",$exif[FILE][FileDateTime]); // date de création
    
          
       return $informationPicture;
    } 
    
    $informationPicture[8]=date ("F d Y H:i:s.",$exif[FILE][FileDateTime]); // date de création
    
    $information=getInformationAboutAPicture("CIMG1253.JPG","CIMG1253.JPG");
    for($i=0;$i<count($information);$i++)
    	echo $information[$i]."<br>";
    1/ Si vous allez sur la galerie, vous pourrez voir que j'ai deux fois la résolution... C'est pas trop nécessaire.
    2/ que représente le "2", en 4ème ligne?
    3/ Malheureusement la date de prise du cliché ne fonctionne toujours pas... :-(
    4/ Est-il possible d'incorporer le tire de l'image JPG? A savoir, quand vous faites un clic droit sur une image JPG, dans les propriétés>résumé vous pouvez lui mettre un titre.
    5/ Comment faire pour que getInformationAboutAPicture devienne une variable, que les infos d el'image agrandie ait automatiquement ses infos affichées. Donc quelle variable remplacer par le nom de la photo au hasard que j'ai mis, à savoir "CIMG1253.JPG".


    L'album en cours de travaux...

    Merci! :D
    Arnoz, 2 Juin 2005
    #16
  17. Offline
    sebge2 Touriste
    le 2 en 4ième ligne sert a identifier le type de l'image ... la fonction renvoie un numéro coresspondant à un type et la fonction ici sert à retourner le type ...
    sebge2, 3 Juin 2005
    #17
  18. Offline
    alan Elite
    5 : ben si des que tu change de page, tes variavles sont détruite me semble alors tu mets dans une variable session (mais faire ca pour chaque image du dossier ca le fait pas!!! ;))
    lol a relire ai mal compris ...
    Code:
    $namePicture = 'le nom de ton fichier';
    $pictureLocalization = 'le répertoire complet ou se trouve l'image' . $namePicture;
    getInformationAboutAPicture($pictureLocalization,$namePicture)

    mais perso je trouve pas dérangeant de refaire un getimagetype

    sinon moi je prefere une autre methode pour le type d'image
    Code:
    <?
    function getTypePicture(){
    	  switch (exif_imagetype($filename)){
    		case IMAGETYPE_JPEG: $type = "JPG"; break;
    		case IMAGETYPE_PNG: $type = "PNG"; break;
    		case IMAGETYPE_GIF: $type = "GIF"; break;
    	  }
       return $type;
    }
    ?>

    4 : c'est la dans la balise <img> ... avec title=""

    3 : sinon c'est logique il manque
    Code:
    $exif = exif_read_data ($pictureLocalization,0,true); 
    donc :
    Code:
    <?
    function getTypePicture($filename){
    	  switch (exif_imagetype($filename)){
    		case IMAGETYPE_JPEG: $type = "JPG"; break;
    		case IMAGETYPE_PNG: $type = "PNG"; break;
    		case IMAGETYPE_GIF: $type = "GIF"; break;
    	  }
       return $type;
    }
    function getInformationAboutAPicture($pictureLocalization,$namePicture){
       $informationPicture[0]=substr($namePicture,0,strrpos($namePicture,".")); // nom sans l'extension 
       list($informationPicture[1], $informationPicture[2], $informationPicture[3], $informationPicture[4]) = @getimagesize($pictureLocalization);   
    //1 = largeur, 2 = longeur, 3 = type(ou 1 = GIF  , 2 = JPG  , 3 = PNG  , 4 = SWF  , 5 = PSD  , 6 = BMP  , 7 = TIFF  (Ordre des octets Intel), 8 = TIFF  (Ordre des octets Motorola), 9 = JPC  , 10 = JP2  , 11 = JPX  , 12 = JB2  , 13 = SWC  , 14 = IFF), 4 =   contient la chaîne à placer dans les balises IMG  : height="xxx" width="yyy"  .
    
    $informationPicture[5]=getTypePicture($pictureLocalization);   
       $informationPicture[6]=@filesize($pictureLocalization); // taille de l'image
       $informationPicture[7]=date ("F d Y H:i:s.", @filemtime($pictureLocalization)); // date de modification
       $exif = exif_read_data ($pictureLocalization,0,true);
       $informationPicture[8]=date ("F d Y H:i:s.",$exif[FILE][FileDateTime]); // date de création
    
         
       return $informationPicture;
    }
    
    
    $information=getInformationAboutAPicture("CIMG1253.JPG","CIMG1253.JPG");
    for($i=0;$i<count($information);$i++)
       echo $information[$i]."<br>";
    ?>
    1 et 2 :
    tu modifies en
    Code:
     list($informationPicture[1], $informationPicture[2]) = @getimagesize($pictureLocalization);    
    et ca devrai aller ;)
    alan, 3 Juin 2005
    #18
  19. Offline
    Arnoz Touriste
    Ok, cette fois c'est bon. Merci beaucoup à toi.
    Le dernier truc (oui, ça ne s'arrête jamais ;) ) c'est que malheureusement la date de création en fonctionne pas... Il me met la même date que la dernière modification.
    Arnoz, 3 Juin 2005
    #19
  20. Offline
    sebge2 Touriste
    sebge2, 4 Juin 2005
    #20
Statut de la discussion:
Fermée.