<?php
 
 function extraire_metadonnees($url)
 {
	$url = "/opt/lampp/htdocs/org.tela_botanica.UploadTest/imageUpload/".$url.".jpg" ;
 
	$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 existe
	if (isset($info["APP13"])) 
	{
		// on parse les donnees
		$iptc = iptcparse($info["APP13"]);
		// et on les analyse
		foreach($iptc as $marker => $section)
		{
			foreach($section as $nom => $val)
			{
				// pour remplir le tableau de donnees
				construire_tableau_insertion_iptc($marker, $val ,&$iptc_tab) ;
			}
		}
	}
	
	return $iptc_tab ;
}

// construit le tableau pour la requete avec les metadonnees exif
function 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 iptc
function construire_tableau_insertion_iptc($nom, $val ,$data_tab)
{	
	switch($nom)
	{
		// mots cles iptc
		case "2#025" :
			$data_tab['ci_meta_iptc_mots_cles'] = "'".$val."'"  ;
		break;
		
		// champ by line
		case "2#080" :
			$data_tab['ci_meta_iptc_by_line']  = "'".$val."'"  ;
		break ;
		
		// cahmp by line titre
		case "2#085" :
			$data_tab['ci_meta_iptc_by_line_title'] = "'".$val."'"  ;
		break ;
		
		// ville
		case "2#090" :
			$data_tab['ci_meta_iptc_city'] = "'".$val."'"  ;
		break ;
		
		// sous location
		case "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 pays
		case "2#100" :
			$data_tab['ci_meta_iptc_country_primary_location_code'] = "'".$val."'"  ;
		break ;
		
		// titre principal
		case "2#105" :
			$data_tab['ci_meta_iptc_headline'] = "'".$val."'"  ;
		break ;
		
		// credit
		case "2#110" :
			$data_tab['ci_meta_iptc_credit'] = "'".$val."'"  ;
		break ;
		
		// copyright
		case "2#116" :
			$data_tab['ci_meta_iptc_copyright_notice'] = "'".$val."'"  ;
		break ;
		
		// contact
		case "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_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_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'] .= " '" ;
}
?>