Subversion Repositories eFlore/Applications.cel

Rev

Rev 416 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
416 aurelien 1
<?php
2
 /**
3
 
4
 Aurelien Peronnet aurelienperonnet@gmail.com 2008
5
 
6
 Ce logiciel est r?gi par la licence CeCILL soumise au droit fran?ais et
7
 respectant les principes de diffusion des logiciels libres. Vous pouvez
8
 utiliser, modifier et/ou redistribuer ce programme sous les conditions
9
 de la licence CeCILL telle que diffus?e par le CEA, le CNRS et l'INRIA
10
 sur le site "http://www.cecill.info".
11
 En contrepartie de l'accessibilit? au code source et des droits de copie,
12
 de modification et de redistribution accord?s par cette licence, il n'est
13
 offert aux utilisateurs qu'une garantie limit?e.  Pour les m?mes raisons,
14
 seule une responsabilit? restreinte p?se sur l'auteur du programme,  le
15
 titulaire des droits patrimoniaux et les conc?dants successifs.
16
 
17
 A cet ?gard  l'attention de l'utilisateur est attir?e sur les risques
18
 associ?s au chargement,  ? l'utilisation,  ? la modification et/ou au
19
 d?veloppement et ? la reproduction du logiciel par l'utilisateur ?tant
20
 donn? sa sp?cificit? de logiciel libre, qui peut le rendre complexe ?
21
 manipuler et qui le r?serve donc ? des d?veloppeurs et des professionnels
22
 avertis poss?dant  des  connaissances  informatiques approfondies.  Les
23
 utilisateurs sont donc invit?s ? charger  et  tester  l'ad?quation  du
24
 logiciel ? leurs besoins dans des conditions permettant d'assurer la
25
 s?curit? de leurs syst?mes et ou de leurs donn?es et, plus g?n?ralement,
26
 ? l'utiliser et l'exploiter dans les m?mes conditions de s?curit?.
27
 
28
 Le fait que vous puissiez acc?der ? cet en-t?te signifie que vous avez
29
 pris connaissance de la licence CeCILL, et que vous en avez accept? les
30
 termes.
31
 
32
 */
33
 
34
 
35
// in : utf8
36
// out : utf8
37
/*
38
 * extractmetadonnee.php
39
 *
40
 * Cas d'utilisation :
41
 * exitraire des metadonnees exif et iptc d'une image
42
 *
43
 */
44
 
45
 function extraire_metadonnees($url)
46
 {
47
 
48
	$iptc = extraire_iptc($url) ;
49
	$exif = extraire_exif($url) ;
50
 
51
	$meta = array_merge($exif,$iptc);
52
	fin_tableau_meta(&$meta) ;
53
 
54
	return $meta ;
55
 }
56
 
57
 /**
58
* Extraction des metadonnées exif
59
**/
60
function extraire_exif($url)
61
{
62
	$exif_tab = preparer_tableau_exif() ;
63
 
64
	$exif = exif_read_data($url,"EXIF,COMPUTED,IFD0,FILE,COMMENT",true,false);
65
 
66
	foreach ($exif as $key => $section)
67
	{
68
	    foreach ($section as $name => $val)
69
	    {
70
			if($name != "MakerNote")
71
			{
72
					construire_tableau_insertion_exif($name, $val ,&$exif_tab) ;
73
			}
74
	    }
75
	}
76
 
77
	return $exif_tab ;
78
}
79
 
80
/**
81
* Extraction des metadonnées iptc
82
**/
83
function extraire_iptc($url)
84
{
85
	$iptc_tab = preparer_tableau_iptc() ;
86
 
87
	// geimagesize renvoie le infos iptc dans le tableau info
88
	$size = getimagesize($url, $info);
89
	// s'il existe
90
	if (isset($info["APP13"]))
91
	{
92
		// on parse les donnees
93
		$iptc = iptcparse($info["APP13"]);
94
		// et on les analyse
95
		foreach($iptc as $marker => $section)
96
		{
97
			foreach($section as $nom => $val)
98
			{
99
				// pour remplir le tableau de donnees
100
				construire_tableau_insertion_iptc($marker, $val ,&$iptc_tab) ;
101
			}
102
		}
103
	}
104
 
105
	return $iptc_tab ;
106
}
107
 
108
// construit le tableau pour la requete avec les metadonnees exif
109
function construire_tableau_insertion_exif($nom, $val ,$data_tab)
110
{
111
	switch($nom)
112
	{
113
 
114
		case "Height" :
115
		$data_tab['ci_meta_height'] = $val  ;
116
		break ;
117
 
118
		case "Width" :
119
		$data_tab['ci_meta_width'] = $val  ;
120
		break ;
121
 
122
		case "Make" :
123
			$data_tab['ci_meta_make'] = $val  ;
124
		break ;
125
 
126
		case "Model" :
127
			$data_tab['ci_meta_model'] = $val ;
128
		break ;
129
 
130
		case "XResolution" :
131
			$data_tab['ci_meta_x_resolution'] = $val  ;
132
		break ;
133
 
134
		case "YResolution" :
135
			$data_tab['ci_meta_y_resolution'] = $val ;
136
		break ;
137
 
138
		case "DateTimeOriginal" :
139
			$data_tab['ci_meta_date_time'] = $val  ;
140
		break ;
141
 
142
		case "GPS" :
143
			$data_tab['ci_meta_gps'] = $val  ;
144
		break ;
145
 
146
		case "UserComment" :
147
			$data_tab['ci_meta_user_comment'] = '"'.$val.'"' ;
148
		break ;
149
 
150
		case "ExposureTime" :
151
			$data_tab['ci_meta_exif_exposure_time'] = $val ;
152
		break ;
153
 
154
		case "FNumber" :
155
			$data_tab['ci_meta_exif_f_number'] = $val  ;
156
		break ;
157
 
158
		case "ExifVersion" :
159
			$data_tab['ci_meta_exif_exif_version'] = $val  ;
160
		break ;
161
 
162
		case "CompressedBitsPerPixel" :
163
			$data_tab['ci_meta_exif_compressed_bits_per_pixel'] = $val  ;
164
		break ;
165
 
166
		case "ShutterSpeedValue" :
167
			$data_tab['ci_meta_exif_shutter_speed_value'] = $val  ;
168
		break ;
169
 
170
		case "ApertureValue" :
171
			$data_tab['ci_meta_exif_aperture_value'] = $val  ;
172
		break ;
173
 
174
		case "ExposureBiasValue" :
175
			$data_tab['ci_meta_exif_exposure_bias_value'] = $val  ;
176
		break ;
177
 
178
		case "MaxApertureValue" :
179
			$data_tab['ci_meta_exif_max_aperture_value'] = $val  ;
180
		break ;
181
 
182
		case "MeteringMode" :
183
			$data_tab['ci_meta_exif_metering_mode'] = $val  ;
184
		break ;
185
 
186
		case "LightSource" :
187
			$data_tab['ci_meta_exif_light_source'] = $val  ;
188
		break ;
189
 
190
		case "Flash" :
191
			$data_tab['ci_meta_exif_flash'] = $val  ;
192
		break ;
193
 
194
		case "FocalLength" :
195
			$data_tab['ci_meta_exif_focal_length'] = $val  ;
196
		break ;
197
 
198
		case "FlashpixVersion" :
199
			$data_tab['ci_meta_exif_flash_pix_version'] = $val  ;
200
		break ;
201
 
202
		case "ColorSpace" :
203
			$data_tab['ci_meta_exif_color_space'] = $val  ;
204
		break ;
205
 
206
		case "InteroperabilityOffset" :
207
			$data_tab['ci_meta_exif_interoperability_offset'] = $val  ;
208
		break ;
209
 
210
		case "FocalPlaneXResolution" :
211
			$data_tab['ci_meta_exif_focal_plane_x_resolution'] = $val  ;
212
		break ;
213
 
214
		case "FocalPlaneYResolution" :
215
			$data_tab['ci_meta_exif_focal_plane_y_resolution'] = $val  ;
216
		break ;
217
 
218
		case "FocalPlaneResolutionUnit" :
219
			$data_tab['ci_meta_exif_focal_plane_resolution_unit'] = $val  ;
220
		break ;
221
 
222
		case "SensingMethod" :
223
			$data_tab['ci_meta_exif_sensing_method'] = $val  ;
224
		break ;
225
 
226
		case "FileSource" :
227
			$data_tab['ci_meta_exif_file_source'] = $val  ;
228
		break ;
229
 
230
		case "CustomRendered" :
231
			$data_tab['ci_meta_exif_custom_rendered'] = $val  ;
232
		break ;
233
 
234
		case "ExposureMode" :
235
			$data_tab['ci_meta_exif_exposure_mode'] = $val  ;
236
		break ;
237
 
238
		case "WhiteBalance" :
239
			$data_tab['ci_meta_exif_white_balance'] = $val  ;
240
		break ;
241
 
242
		case "DigitalZoomRatio" :
243
			$data_tab['ci_meta_exif_digital_zoom_ratio'] = $val  ;
244
		break ;
245
 
246
		case "SceneCaptureType" :
247
			$data_tab['ci_meta_exif_scene_capture_type'] = $val  ;
248
		break ;
249
 
250
		case "GainControl" :
251
			$data_tab['ci_meta_exif_gain_control'] = $val  ;
252
		break ;
253
 
254
		case "Contrast" :
255
			$data_tab['ci_meta_exif_contrast'] = $val  ;
256
		break ;
257
 
258
		case "Saturation" :
259
			$data_tab['ci_meta_exif_saturation'] = $val  ;
260
		break ;
261
 
262
		case "Sharpness" :
263
			$data_tab['ci_meta_exif_sharpness'] = $val  ;
264
		break ;
265
 
266
		case "SubjectDistanceRange" :
267
			$data_tab['ci_meta_exif_subject_distance_range'] = $val  ;
268
		break ;
269
 
270
		default :
271
			$data_tab['ci_meta_exif_autres'] .= $nom.":".$val.";" ;
272
	}
273
}
274
 
275
// construit le tableau pour la requete avec les metadonnees iptc
276
function construire_tableau_insertion_iptc($nom, $val ,$data_tab)
277
{
278
	switch($nom)
279
	{
280
		// mots cles iptc
281
		case "2#005" :
282
			$data_tab['ci_meta_iptc_category'] = $val ;
283
		break;
284
 
285
		case "2#025" :
286
			$data_tab['ci_meta_iptc_mots_cles'] = $val ;
287
		break;
288
 
289
		// champ by line
290
		case "2#080" :
291
			$data_tab['ci_meta_iptc_by_line']  = $val  ;
292
		break ;
293
 
294
		// cahmp by line titre
295
		case "2#085" :
296
			$data_tab['ci_meta_iptc_by_line_title'] = $val  ;
297
		break ;
298
 
299
		// ville
300
		case "2#090" :
301
			$data_tab['ci_meta_iptc_city'] = $val  ;
302
		break ;
303
 
304
		// sous location
305
		case "2#092" :
306
			$data_tab['ci_meta_iptc_sub_location'] = $val ;
307
		break ;
308
 
309
		// etat (pour les us)
310
		case "2#095" :
311
			$data_tab['ci_meta_iptc_province_state'] = $val  ;
312
		break ;
313
 
314
		// code pays
315
		case "2#100" :
316
			$data_tab['ci_meta_iptc_country_primary_location_code'] = $val  ;
317
		break ;
318
 
319
		// code pays
320
		case "2#101" :
321
			$data_tab['ci_meta_iptc_country_name'] = $val  ;
322
		break ;
323
 
324
		// titre principal
325
		case "2#105" :
326
			$data_tab['ci_meta_iptc_headline'] = $val  ;
327
		break ;
328
 
329
		// credit
330
		case "2#110" :
331
			$data_tab['ci_meta_iptc_credit'] = $val  ;
332
		break ;
333
 
334
		// copyright
335
		case "2#116" :
336
			$data_tab['ci_meta_iptc_copyright_notice'] = $val  ;
337
		break ;
338
 
339
		// contact
340
		case "2#118" :
341
			$data_tab['ci_meta_iptc_contact'] = $val  ;
342
		break ;
343
 
344
		// autres (pour les champs qu'on ne prend pas en compte)
345
		default :
346
			$data_tab['ci_meta_iptc_autres'] .= $nom.":".$val.";" ;
347
	}
348
}
349
 
350
function preparer_tableau_iptc()
351
{
352
	$data_tab = array() ;
353
 
354
	$data_tab['ci_meta_iptc_category'] = NULL ;
355
 
356
	$data_tab['ci_meta_iptc_mots_cles'] = NULL ;
357
 
358
	$data_tab['ci_meta_iptc_by_line']  = NULL ;
359
 
360
	$data_tab['ci_meta_iptc_by_line_title'] = NULL ;
361
 
362
	$data_tab['ci_meta_iptc_city'] = NULL ;
363
 
364
	$data_tab['ci_meta_iptc_sub_location'] = NULL ;
365
 
366
	$data_tab['ci_meta_iptc_province_state'] = NULL ;
367
 
368
	$data_tab['ci_meta_iptc_country_primary_location_code'] = NULL ;
369
 
370
	$data_tab['ci_meta_iptc_country_name'] = NULL  ;
371
 
372
	$data_tab['ci_meta_iptc_headline'] = NULL ;
373
 
374
	$data_tab['ci_meta_iptc_credit'] = NULL ;
375
 
376
	$data_tab['ci_meta_iptc_copyright_notice'] = NULL ;
377
 
378
	$data_tab['ci_meta_iptc_contact'] = NULL ;
379
 
380
	$data_tab['ci_meta_iptc_autres'] .= " " ;
381
 
382
	return $data_tab ;
383
}
384
 
385
 
386
 function preparer_tableau_exif()
387
 {
388
 
389
	$data_tab = array() ;
390
 
391
	$data_tab['ci_meta_height'] = 0  ;
392
 
393
	$data_tab['ci_meta_width'] = 0  ;
394
 
395
	$data_tab['ci_meta_make'] = NULL ;
396
 
397
	$data_tab['ci_meta_model'] = NULL ;
398
 
399
	$data_tab['ci_meta_x_resolution'] = NULL ;
400
 
401
	$data_tab['ci_meta_y_resolution'] = NULL ;
402
 
403
	$data_tab['ci_meta_date_time'] = NULL ;
404
 
405
	$data_tab['ci_meta_gps'] = NULL ;
406
 
407
	$data_tab['ci_meta_user_comment'] = NULL ;
408
 
409
	$data_tab['ci_meta_exif_exposure_time'] = NULL ;
410
 
411
	$data_tab['ci_meta_exif_f_number'] = NULL ;
412
 
413
	$data_tab['ci_meta_exif_exif_version'] = NULL ;
414
 
415
	$data_tab['ci_meta_exif_compressed_bits_per_pixel'] = NULL ;
416
 
417
	$data_tab['ci_meta_exif_shutter_speed_value'] = NULL ;
418
 
419
	$data_tab['ci_meta_exif_aperture_value'] = NULL ;
420
 
421
	$data_tab['ci_meta_exif_exposure_bias_value'] = NULL ;
422
 
423
	$data_tab['ci_meta_exif_max_aperture_value'] = NULL ;
424
 
425
	$data_tab['ci_meta_exif_metering_mode'] = NULL ;
426
 
427
	$data_tab['ci_meta_exif_flash'] = NULL ;
428
 
429
	$data_tab['ci_meta_exif_light_source'] = NULL ;
430
 
431
	$data_tab['ci_meta_exif_focal_length'] = NULL ;
432
 
433
	$data_tab['ci_meta_exif_flash_pix_version'] = NULL ;
434
 
435
	$data_tab['ci_meta_exif_color_space'] = NULL ;
436
 
437
	$data_tab['ci_meta_exif_interoperability_offset'] = NULL ;
438
 
439
	$data_tab['ci_meta_exif_focal_plane_x_resolution'] = NULL ;
440
 
441
	$data_tab['ci_meta_exif_focal_plane_y_resolution'] = NULL ;
442
 
443
	$data_tab['ci_meta_exif_focal_plane_resolution_unit'] = NULL ;
444
 
445
	$data_tab['ci_meta_exif_sensing_method'] = NULL ;
446
 
447
	$data_tab['ci_meta_exif_file_source'] = NULL ;
448
 
449
	$data_tab['ci_meta_exif_custom_rendered'] = NULL ;
450
 
451
	$data_tab['ci_meta_exif_exposure_mode'] = NULL ;
452
 
453
	$data_tab['ci_meta_exif_white_balance'] = NULL ;
454
 
455
	$data_tab['ci_meta_exif_digital_zoom_ratio'] = NULL ;
456
 
457
	$data_tab['ci_meta_exif_scene_capture_type'] = NULL ;
458
 
459
	$data_tab['ci_meta_exif_gain_control'] = NULL ;
460
 
461
	$data_tab['ci_meta_exif_contrast'] = NULL ;
462
 
463
	$data_tab['ci_meta_exif_saturation'] = NULL ;
464
 
465
	$data_tab['ci_meta_exif_sharpness'] = NULL ;
466
 
467
	$data_tab['ci_meta_exif_subject_distance_range'] = NULL ;
468
 
469
	$data_tab['ci_meta_exif_autres'] .= " " ;
470
 
471
	return $data_tab ;
472
}
473
 
474
function fin_tableau_meta($tab)
475
{
476
	$tab['ci_meta_exif_autres'] .= " " ;
477
	$tab['ci_meta_iptc_autres'] .= " " ;
478
	$tab['ci_nom_original'] = NULL ;
479
	$tab['ci_md5'] = NULL ;
480
}
481
?>