Rev 416 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/**Aurelien Peronnet aurelienperonnet@gmail.com 2008Ce logiciel est r?gi par la licence CeCILL soumise au droit fran?ais etrespectant les principes de diffusion des logiciels libres. Vous pouvezutiliser, modifier et/ou redistribuer ce programme sous les conditionsde la licence CeCILL telle que diffus?e par le CEA, le CNRS et l'INRIAsur le site "http://www.cecill.info".En contrepartie de l'accessibilit? au code source et des droits de copie,de modification et de redistribution accord?s par cette licence, il n'estoffert aux utilisateurs qu'une garantie limit?e. Pour les m?mes raisons,seule une responsabilit? restreinte p?se sur l'auteur du programme, letitulaire des droits patrimoniaux et les conc?dants successifs.A cet ?gard l'attention de l'utilisateur est attir?e sur les risquesassoci?s au chargement, ? l'utilisation, ? la modification et/ou aud?veloppement et ? la reproduction du logiciel par l'utilisateur ?tantdonn? sa sp?cificit? de logiciel libre, qui peut le rendre complexe ?manipuler et qui le r?serve donc ? des d?veloppeurs et des professionnelsavertis poss?dant des connaissances informatiques approfondies. Lesutilisateurs sont donc invit?s ? charger et tester l'ad?quation dulogiciel ? leurs besoins dans des conditions permettant d'assurer las?curit? de leurs syst?mes et ou de leurs donn?es et, plus g?n?ralement,? l'utiliser et l'exploiter dans les m?mes conditions de s?curit?.Le fait que vous puissiez acc?der ? cet en-t?te signifie que vous avezpris connaissance de la licence CeCILL, et que vous en avez accept? lestermes.*/// in : utf8// out : utf8/** extractmetadonnee.php** Cas d'utilisation :* exitraire des metadonnees exif et iptc d'une image**/function extraire_metadonnees($url){$iptc = extraire_iptc($url) ;$exif = extraire_exif($url) ;$meta = array_merge($exif,$iptc);fin_tableau_meta(&$meta) ;return $meta ;}/*** Extraction des metadonnées exif**/function extraire_exif($url){$exif_tab = preparer_tableau_exif() ;$exif = exif_read_data($url,"EXIF,COMPUTED,IFD0,FILE,COMMENT",true,false);foreach ($exif as $key => $section){foreach ($section as $name => $val){if($name != "MakerNote"){construire_tableau_insertion_exif($name, $val ,&$exif_tab) ;}}}return $exif_tab ;}/*** Extraction des metadonnées iptc**/function extraire_iptc($url){$iptc_tab = preparer_tableau_iptc() ;// geimagesize renvoie le infos iptc dans le tableau info$size = getimagesize($url, $info);// s'il existeif (isset($info["APP13"])){// on parse les donnees$iptc = iptcparse($info["APP13"]);// et on les analyseforeach($iptc as $marker => $section){foreach($section as $nom => $val){// pour remplir le tableau de donneesconstruire_tableau_insertion_iptc($marker, $val ,&$iptc_tab) ;}}}return $iptc_tab ;}// construit le tableau pour la requete avec les metadonnees exiffunction construire_tableau_insertion_exif($nom, $val ,$data_tab){switch($nom){case "Height" :$data_tab['ci_meta_height'] = $val ;break ;case "Width" :$data_tab['ci_meta_width'] = $val ;break ;case "Make" :$data_tab['ci_meta_make'] = $val ;break ;case "Model" :$data_tab['ci_meta_model'] = $val ;break ;case "XResolution" :$data_tab['ci_meta_x_resolution'] = $val ;break ;case "YResolution" :$data_tab['ci_meta_y_resolution'] = $val ;break ;case "DateTimeOriginal" :$data_tab['ci_meta_date_time'] = $val ;break ;case "GPS" :$data_tab['ci_meta_gps'] = $val ;break ;case "UserComment" :$data_tab['ci_meta_user_comment'] = '"'.$val.'"' ;break ;case "ExposureTime" :$data_tab['ci_meta_exif_exposure_time'] = $val ;break ;case "FNumber" :$data_tab['ci_meta_exif_f_number'] = $val ;break ;case "ExifVersion" :$data_tab['ci_meta_exif_exif_version'] = $val ;break ;case "CompressedBitsPerPixel" :$data_tab['ci_meta_exif_compressed_bits_per_pixel'] = $val ;break ;case "ShutterSpeedValue" :$data_tab['ci_meta_exif_shutter_speed_value'] = $val ;break ;case "ApertureValue" :$data_tab['ci_meta_exif_aperture_value'] = $val ;break ;case "ExposureBiasValue" :$data_tab['ci_meta_exif_exposure_bias_value'] = $val ;break ;case "MaxApertureValue" :$data_tab['ci_meta_exif_max_aperture_value'] = $val ;break ;case "MeteringMode" :$data_tab['ci_meta_exif_metering_mode'] = $val ;break ;case "LightSource" :$data_tab['ci_meta_exif_light_source'] = $val ;break ;case "Flash" :$data_tab['ci_meta_exif_flash'] = $val ;break ;case "FocalLength" :$data_tab['ci_meta_exif_focal_length'] = $val ;break ;case "FlashpixVersion" :$data_tab['ci_meta_exif_flash_pix_version'] = $val ;break ;case "ColorSpace" :$data_tab['ci_meta_exif_color_space'] = $val ;break ;case "InteroperabilityOffset" :$data_tab['ci_meta_exif_interoperability_offset'] = $val ;break ;case "FocalPlaneXResolution" :$data_tab['ci_meta_exif_focal_plane_x_resolution'] = $val ;break ;case "FocalPlaneYResolution" :$data_tab['ci_meta_exif_focal_plane_y_resolution'] = $val ;break ;case "FocalPlaneResolutionUnit" :$data_tab['ci_meta_exif_focal_plane_resolution_unit'] = $val ;break ;case "SensingMethod" :$data_tab['ci_meta_exif_sensing_method'] = $val ;break ;case "FileSource" :$data_tab['ci_meta_exif_file_source'] = $val ;break ;case "CustomRendered" :$data_tab['ci_meta_exif_custom_rendered'] = $val ;break ;case "ExposureMode" :$data_tab['ci_meta_exif_exposure_mode'] = $val ;break ;case "WhiteBalance" :$data_tab['ci_meta_exif_white_balance'] = $val ;break ;case "DigitalZoomRatio" :$data_tab['ci_meta_exif_digital_zoom_ratio'] = $val ;break ;case "SceneCaptureType" :$data_tab['ci_meta_exif_scene_capture_type'] = $val ;break ;case "GainControl" :$data_tab['ci_meta_exif_gain_control'] = $val ;break ;case "Contrast" :$data_tab['ci_meta_exif_contrast'] = $val ;break ;case "Saturation" :$data_tab['ci_meta_exif_saturation'] = $val ;break ;case "Sharpness" :$data_tab['ci_meta_exif_sharpness'] = $val ;break ;case "SubjectDistanceRange" :$data_tab['ci_meta_exif_subject_distance_range'] = $val ;break ;default :$data_tab['ci_meta_exif_autres'] .= $nom.":".$val.";" ;}}// construit le tableau pour la requete avec les metadonnees iptcfunction construire_tableau_insertion_iptc($nom, $val ,$data_tab){switch($nom){// mots cles iptccase "2#005" :$data_tab['ci_meta_iptc_category'] = $val ;break;case "2#025" :$data_tab['ci_meta_iptc_mots_cles'] = $val ;break;// champ by linecase "2#080" :$data_tab['ci_meta_iptc_by_line'] = $val ;break ;// cahmp by line titrecase "2#085" :$data_tab['ci_meta_iptc_by_line_title'] = $val ;break ;// villecase "2#090" :$data_tab['ci_meta_iptc_city'] = $val ;break ;// sous locationcase "2#092" :$data_tab['ci_meta_iptc_sub_location'] = $val ;break ;// etat (pour les us)case "2#095" :$data_tab['ci_meta_iptc_province_state'] = $val ;break ;// code payscase "2#100" :$data_tab['ci_meta_iptc_country_primary_location_code'] = $val ;break ;// code payscase "2#101" :$data_tab['ci_meta_iptc_country_name'] = $val ;break ;// titre principalcase "2#105" :$data_tab['ci_meta_iptc_headline'] = $val ;break ;// creditcase "2#110" :$data_tab['ci_meta_iptc_credit'] = $val ;break ;// copyrightcase "2#116" :$data_tab['ci_meta_iptc_copyright_notice'] = $val ;break ;// contactcase "2#118" :$data_tab['ci_meta_iptc_contact'] = $val ;break ;// autres (pour les champs qu'on ne prend pas en compte)default :$data_tab['ci_meta_iptc_autres'] .= $nom.":".$val.";" ;}}function preparer_tableau_iptc(){$data_tab = array() ;$data_tab['ci_meta_iptc_category'] = NULL ;$data_tab['ci_meta_iptc_mots_cles'] = NULL ;$data_tab['ci_meta_iptc_by_line'] = NULL ;$data_tab['ci_meta_iptc_by_line_title'] = NULL ;$data_tab['ci_meta_iptc_city'] = NULL ;$data_tab['ci_meta_iptc_sub_location'] = NULL ;$data_tab['ci_meta_iptc_province_state'] = NULL ;$data_tab['ci_meta_iptc_country_primary_location_code'] = NULL ;$data_tab['ci_meta_iptc_country_name'] = NULL ;$data_tab['ci_meta_iptc_headline'] = NULL ;$data_tab['ci_meta_iptc_credit'] = NULL ;$data_tab['ci_meta_iptc_copyright_notice'] = NULL ;$data_tab['ci_meta_iptc_contact'] = NULL ;$data_tab['ci_meta_iptc_autres'] .= " " ;return $data_tab ;}function preparer_tableau_exif(){$data_tab = array() ;$data_tab['ci_meta_height'] = 0 ;$data_tab['ci_meta_width'] = 0 ;$data_tab['ci_meta_make'] = NULL ;$data_tab['ci_meta_model'] = NULL ;$data_tab['ci_meta_x_resolution'] = NULL ;$data_tab['ci_meta_y_resolution'] = NULL ;$data_tab['ci_meta_date_time'] = NULL ;$data_tab['ci_meta_gps'] = NULL ;$data_tab['ci_meta_user_comment'] = NULL ;$data_tab['ci_meta_exif_exposure_time'] = NULL ;$data_tab['ci_meta_exif_f_number'] = NULL ;$data_tab['ci_meta_exif_exif_version'] = NULL ;$data_tab['ci_meta_exif_compressed_bits_per_pixel'] = NULL ;$data_tab['ci_meta_exif_shutter_speed_value'] = NULL ;$data_tab['ci_meta_exif_aperture_value'] = NULL ;$data_tab['ci_meta_exif_exposure_bias_value'] = NULL ;$data_tab['ci_meta_exif_max_aperture_value'] = NULL ;$data_tab['ci_meta_exif_metering_mode'] = NULL ;$data_tab['ci_meta_exif_flash'] = NULL ;$data_tab['ci_meta_exif_light_source'] = NULL ;$data_tab['ci_meta_exif_focal_length'] = NULL ;$data_tab['ci_meta_exif_flash_pix_version'] = NULL ;$data_tab['ci_meta_exif_color_space'] = NULL ;$data_tab['ci_meta_exif_interoperability_offset'] = NULL ;$data_tab['ci_meta_exif_focal_plane_x_resolution'] = NULL ;$data_tab['ci_meta_exif_focal_plane_y_resolution'] = NULL ;$data_tab['ci_meta_exif_focal_plane_resolution_unit'] = NULL ;$data_tab['ci_meta_exif_sensing_method'] = NULL ;$data_tab['ci_meta_exif_file_source'] = NULL ;$data_tab['ci_meta_exif_custom_rendered'] = NULL ;$data_tab['ci_meta_exif_exposure_mode'] = NULL ;$data_tab['ci_meta_exif_white_balance'] = NULL ;$data_tab['ci_meta_exif_digital_zoom_ratio'] = NULL ;$data_tab['ci_meta_exif_scene_capture_type'] = NULL ;$data_tab['ci_meta_exif_gain_control'] = NULL ;$data_tab['ci_meta_exif_contrast'] = NULL ;$data_tab['ci_meta_exif_saturation'] = NULL ;$data_tab['ci_meta_exif_sharpness'] = NULL ;$data_tab['ci_meta_exif_subject_distance_range'] = NULL ;$data_tab['ci_meta_exif_autres'] .= " " ;return $data_tab ;}function fin_tableau_meta($tab){$tab['ci_meta_exif_autres'] .= " " ;$tab['ci_meta_iptc_autres'] .= " " ;$tab['ci_nom_original'] = NULL ;$tab['ci_md5'] = NULL ;}?>