Infos fonction EXIF

Statut
N'est pas ouverte pour d'autres réponses.

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
 
J

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.
 
1er
OP
A

Arnoz

Touriste
Merci je vais tester tout ça.
 
1er
OP
A

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...
 

sebge2

Elite
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 :)
 
1er
OP
A

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...
 

sebge2

Elite
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:
 

alan

Elite
sebge2 a dit:
voila manque plus que la date de prise de la photo :wink:
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;
}
?>
 
1er
OP
A

Arnoz

Touriste
J'essayerai tout ça demain, j'ai pas le temps là. En tout cas un tout tout grand merci!
 

sebge2

Elite
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:
 

alan

Elite
sebge2 a dit:
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:
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!! ;)
 
1er
OP
A

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
 

alan

Elite
sebge2 a dit:
Code:
$information=getInformationAboutAPicture("Folder.jpg","Folder.jpg");
for($i=0;$i<count($information);$i++) echo $information[$i]."<br>";
 
1er
OP
A

Arnoz

Touriste
Je m'occupe de ça plus tard, je vous tien au courant. Encore merci!
 
1er
OP
A

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
 

sebge2

Elite
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 ...
 

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 ;)
 
1er
OP
A

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.
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut