Subversion Repositories eFlore/Applications.cel

Rev

Rev 2460 | Rev 3560 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2460 Rev 3534
Line 441... Line 441...
441
		} else {
441
		} else {
442
			$this->meta = $this->decoderMetadonneesBasique($cheminImage);
442
			$this->meta = $this->decoderMetadonneesBasique($cheminImage);
443
		}
443
		}
Line 444... Line 444...
444
 
444
 
445
		$metadonnees = array();
-
 
446
		$metadonnees['hauteur'] = $this->obtenirHauteur();
-
 
447
		$metadonnees['largeur'] = $this->obtenirLargeur();
445
		$metadonnees = array();
448
		$metadonnees['date_prise_de_vue'] = $this->obtenirDatePriseDeVue();
-
 
449
		$metadonnees['appareil_fabriquant'] = $this->obtenirAppareilFabricant();
446
		$metadonnees['date_shot'] = $this->obtenirDatePriseDeVue();
450
		$metadonnees['appareil_modele'] = $this->obtenirAppareilModele();
-
 
451
		$metadonnees['meta_exif'] = $this->convertirMetaVersXML('EXIF');
-
 
452
		$metadonnees['meta_iptc'] = $this->convertirMetaVersXML('IPTC');
-
 
453
		$metadonnees['meta_xmp'] = $this->convertirMetaVersXML('XMP');
-
 
454
		$metadonnees['meta_makernote'] = $this->convertirMetaVersXML('MAKERNOTE');
447
		$metadonnees['size'] = getimagesize($cheminImage);
455
		return $metadonnees;
448
		return $metadonnees;
Line 456... Line 449...
456
	}
449
	}
457
 
450
 
Line 519... Line 512...
519
			'ImageWidth' => array('id' => '', 'valeur' => $exif['COMPUTED']['Width']),
512
			'ImageWidth' => array('id' => '', 'valeur' => $exif['COMPUTED']['Width']),
520
			'ImageHeight' => array('id' => '', 'valeur' => $exif['COMPUTED']['Height']));
513
			'ImageHeight' => array('id' => '', 'valeur' => $exif['COMPUTED']['Height']));
521
		return $metadonnees ;
514
		return $metadonnees ;
522
	}
515
	}
Line 523... Line -...
523
 
-
 
524
	private function formaterTableauExif(&$tableau) {
-
 
Line 525... Line -...
525
		$tableau_exif_formate = array();
-
 
526
 
-
 
527
		foreach ($tableau as $nom_tag => $valeur) {
-
 
528
			$id = '';
-
 
529
			if (isset($this->tableau_ids_tags_exif[$nom_tag])) {
-
 
530
				$id = $this->tableau_ids_tags_exif[$nom_tag];
-
 
531
			}
-
 
532
			$tableau_exif_formate[$nom_tag] = array('id' => $id, 'valeur' => $valeur);
-
 
533
		}
-
 
534
 
-
 
535
		return $tableau_exif_formate;
-
 
536
	}
-
 
537
 
-
 
538
	/**
-
 
539
	 * Extraction des metadonnées iptc
-
 
540
	 */
-
 
541
	public function extraireIptc($chemin_fichier) {
-
 
542
		$meta = array();
-
 
543
 
-
 
544
		// getimagesize renvoie les infos iptc dans le tableau info
-
 
545
		$info = array();
-
 
546
		$size = getimagesize($chemin_fichier, $info);
-
 
547
 
-
 
548
		// s'il existe
-
 
549
		if (isset($info['APP13'])) {
-
 
550
			// on parse les donnees
-
 
551
			$iptc = iptcparse($info['APP13']);
-
 
552
			if ($iptc) {
-
 
553
				// et on les analyse
-
 
554
				foreach ($iptc as $marker => $section) {
-
 
555
					foreach ($section as $nom => $val) {
-
 
556
						// pour remplir le tableau de donnees
-
 
557
						$this->decoderValeurIptc($marker, $val, $meta);
-
 
558
					}
-
 
559
				}
-
 
560
			}
-
 
561
		}
-
 
562
		return $meta;
-
 
563
	}
-
 
564
 
-
 
565
	/**
-
 
566
	* Stocke une valeur de metadonnées iptc dans le champ du tableau correspondant
-
 
567
	* @param String $nom nom de la valeur
-
 
568
	* @param String $val valeur
-
 
569
	* @param String $data référence vers le tableau où la donnée sera stockée
-
 
570
	**/
-
 
571
	private function decoderValeurIptc($nom, $val, &$data_tab) {
-
 
572
		switch ($nom) {
-
 
573
			case "2#005" :// mots cles iptc
-
 
574
				$data_tab['Category'] = array('id' => '5', 'valeur' => $val);
-
 
575
				break;
-
 
576
			case "2#080" :// champ by line
-
 
577
				$data_tab['By-Line']  = array('id' => '80', 'valeur' => $val);
-
 
578
				break ;
-
 
579
			case "2#085" :// champ by line titre
-
 
580
				$data_tab['By-LineTitle'] = array('id' => '85', 'valeur' => $val);
-
 
581
				break ;
-
 
582
			case "2#090" :// ville
-
 
583
				$data_tab['City'] = array('id' => '90', 'valeur' => $val);
-
 
584
				break ;
-
 
585
			case "2#092" :// sous location
-
 
586
				$data_tab['SubLocation'] = array('id' => '92', 'valeur' => $val);
-
 
587
				break ;
-
 
588
			case "2#095" :// etat (pour les us)
-
 
589
				$data_tab['ProvinceState'] = array('id' => '95', 'valeur' => $val);
-
 
590
				break ;
-
 
591
			case "2#100" :// code pays
-
 
592
				$data_tab['CountryPrimaryLocationCode'] = array('id' => '100', 'valeur' => $val);
-
 
593
				break ;
-
 
594
			case "2#101" :// code pays
-
 
595
				$data_tab['CountryName'] = array('id' => '101', 'valeur' => $val);
-
 
596
				break ;
-
 
597
			case "2#105" :// titre principal
-
 
598
				$data_tab['Headline'] = array('id' => '105', 'valeur' => $val);
-
 
599
				break ;
-
 
600
			case "2#110" :// credit
-
 
601
				$data_tab['Credit'] = array('id' => '110', 'valeur' => $val);
-
 
602
				break ;
-
 
603
			case "2#116" :// copyright
-
 
604
				$data_tab['CopyrightNotice'] = array('id' => '116', 'valeur' => $val);
-
 
605
				break ;
-
 
606
			case "2#118" :// contact
-
 
607
				$data_tab['Contact'] = array('id' => '118', 'valeur' => $val);
-
 
608
				break ;
-
 
609
			default:
-
 
610
				unset($data_tab['nom']);
-
 
Line 611... Line -...
611
		}
-
 
612
	}
-
 
613
 
-
 
614
	private function obtenirHauteur() {
-
 
615
		$hauteur = isset($this->meta['File']['ImageHeight']) ? $this->meta['File']['ImageHeight']['valeur'] : '';
-
 
616
		return $hauteur;
-
 
617
	}
-
 
618
 
-
 
619
	private function obtenirLargeur() {
-
 
Line 620... Line 516...
620
		$largeur = isset($this->meta['File']['ImageWidth']) ? $this->meta['File']['ImageWidth']['valeur'] : '';
516
 
621
		return $largeur;
517
 
622
	}
518
 
623
 
519
 
Line 624... Line -...
624
	private function obtenirDatePriseDeVue() {
-
 
625
		$date = isset($this->meta['EXIF']['DateTimeOriginal']) ? $this->meta['EXIF']['DateTimeOriginal']['valeur'] : '';
-
 
626
		return $date;
-
 
627
	}
-
 
628
 
-
 
629
	private function obtenirAppareilFabricant() {
-
 
630
		$fabriquant = isset($this->meta['EXIF']['Make']) ? $this->meta['EXIF']['Make']['valeur'] : '';
-
 
631
		return $fabriquant;
-
 
632
	}
-
 
633
 
-
 
634
	private function obtenirAppareilModele() {
-
 
635
		$modele = isset($this->meta['EXIF']['CameraModelName']) ? $this->meta['EXIF']['CameraModelName']['valeur'] : '';
-
 
636
		return $modele;
-
 
637
	}
-
 
638
 
-
 
639
	private function convertirMetaVersXML($type) {
-
 
640
		$xml = null;
-
 
641
		if (isset($this->meta[$type])) {
-
 
642
			$racine = strtolower($type);
-
 
643
 
-
 
644
			$xml = '<?xml version="1.0" encoding="UTF-8" ?>'."\n";
-
 
645
			$xml .= "<$racine>"."\n";
-
 
646
			foreach ($this->meta[$type] as $prop => &$valeur) {
-
 
647
				$xml .= '<'.$prop.' id="'.$valeur['id'].'">'.$valeur['valeur'].'</'.$prop.'>'."\n";
-
 
648
			}
520
	private function obtenirDatePriseDeVue() {
649
			$xml .= "</$racine>";
521
		$date = isset($this->meta['EXIF']['DateTimeOriginal']) ? $this->meta['EXIF']['DateTimeOriginal']['valeur'] : '';