Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 632 Rev 668
Line 13... Line 13...
13
 
13
 
14
		$this->config=$config;
14
		$this->config=$config;
Line 15... Line 15...
15
		$this->mode = self::MODE_GD;
15
		$this->mode = self::MODE_GD;
16
		
16
		
17
		if (extension_loaded('imagick')) {
17
		if (extension_loaded('imagick')) {
18
			putenv("MAGICK_TEMPORARY_PATH=/home/aurelien/web/file_tmp");
18
			putenv("MAGICK_TEMPORARY_PATH=".$this->config['cel_db']['chemin_stockage_temp']);
19
			$this->mode = self::MODE_IMAGEMAGICK;
19
			$this->mode = self::MODE_IMAGEMAGICK;
Line 20... Line 20...
20
		}
20
		}
21
	}
21
	}
22
	
22
	
Line 23... Line -...
23
	public function recreerMiniaturesRecursivement() {
-
 
24
		$this->itererRecursivement($this->config['cel_db']['chemin_images']);
-
 
25
	}
-
 
26
	
-
 
27
	public function testOptiCrop() {
-
 
28
		
-
 
29
		$image = $this->obtenirImageEtInfosPourChemin('/home/aurelien/web/file_tmp/test.jpg');
-
 
30
		return $this->opticrop($image,'CRXS','');
23
	public function recreerMiniaturesRecursivement() {
Line 31... Line 24...
31
		
24
		$this->itererRecursivement($this->config['cel_db']['chemin_images']);
32
	}
25
	}
Line 33... Line 26...
33
	
26
	
Line 34... Line -...
34
	public function regenererMiniaturesIntervalle($params) {
-
 
35
		
-
 
36
		$id_debut = $params[0];
-
 
37
		$id_fin = $params[1];
27
	public function regenererMiniaturesIntervalle($params) {
38
 
-
 
39
		if (is_numeric($id_debut) && is_numeric($id_fin)) {
-
 
Line 40... Line 28...
40
			
28
		
41
			
29
		$id_debut = $params[0];
42
			//echo("Début du traitement des images de ".$id_debut." à ".$id_fin."\n");
30
		$id_fin = $params[1];
43
			
31
 
Line 58... Line 46...
58
		if (!is_numeric($id)) {
46
		if (!is_numeric($id)) {
59
		      return;
47
		      return;
60
		}
48
		}
Line 61... Line 49...
61
 
49
 
62
		$dossier_fichier = $this->obtenirDossierPourFormat($id, 'O');
-
 
63
 
50
		$dossier_fichier = $this->obtenirDossierPourFormat($id, 'O');
Line 64... Line 51...
64
		$nom_fichier = $this->convertirIdBddVersNomFichier($id, 'O');
51
		$nom_fichier = $this->convertirIdBddVersNomFichier($id, 'O');
Line 65... Line 52...
65
		
52
		
66
		$chemin_fichier = $dossier_fichier.'/'.$nom_fichier;
53
		$chemin_fichier = $dossier_fichier.'/'.$nom_fichier;
Line 67... Line 54...
67
 
54
 
68
		if(file_exists($chemin_fichier)) {
55
		if(file_exists($chemin_fichier)) {
69
			$infos_image_originale = $this->obtenirImageEtInfosPourChemin($chemin_fichier);
56
			$infos_image_originale = $this->obtenirImageEtInfosPourChemin($chemin_fichier);
70
							
57
							
71
			// creation de miniatures pour chacuns des formats définis
58
			// creation de miniatures pour chacuns des formats définis
72
			foreach($this->formats as $format) {
-
 
73
				$this->creerEtStockerMiniatureFichierImageSelonFormat($id, $infos_image_originale, $format);
-
 
74
			}
-
 
75
					      
-
 
76
	      	//if($this->verbose) {
-
 
77
	      		//echo("traitement de l'image ".$infos_image_originale."\n");
59
			foreach($this->formats as $format) {
78
	      	//}
60
				$this->creerEtStockerMiniatureFichierImageSelonFormat($id, $infos_image_originale, $format);
Line 79... Line 61...
79
		} else {
61
			};
Line 96... Line 78...
96
				continue;
78
				continue;
97
			}
79
			}
Line 98... Line 80...
98
			
80
			
Line 99... Line -...
99
		    if ($fichier_ou_dossier->isDir()) {
-
 
100
		    	
81
		    if ($fichier_ou_dossier->isDir()) {
Line 101... Line 82...
101
		    	$profondeur_dossier_fils = $profondeur + 1;
82
		    	
Line 102... Line 83...
102
	    		$this->itererRecursivement($fichier_ou_dossier->getPathname(), $profondeur_dossier_fils);
83
	    		$this->itererRecursivement($fichier_ou_dossier->getPathname());
Line 114... Line 95...
114
					$this->creerEtStockerMiniatureFichierImageSelonFormat($id, $infos_image_originale, $format);
95
					$this->creerEtStockerMiniatureFichierImageSelonFormat($id, $infos_image_originale, $format);
115
				}
96
				}
116
		    }
97
		    }
117
		}
98
		}
118
	}
99
	}
119
			
100
	
120
	public function creerEtStockerMiniatureFichierImageSelonFormat($id ,$infos_image_originale, $format = 'O') {
101
	public function creerMiniatureImageSelonFormat($infos_image_originale, $format = 'O') {
Line 121... Line 102...
121
		
102
		
122
		if ($format == 'O') {		
103
		if ($format == 'O') {		
123
			// format original : rien à faire
104
			// format original : rien à faire
Line 141... Line 122...
141
				$image_redimensionnee = $this->creerMiniatureCarree($infos_image_originale, $format);				
122
				$image_redimensionnee = $this->creerMiniatureCarree($infos_image_originale, $format);				
142
			} else {
123
			} else {
143
				$image_redimensionnee = $this->creerMiniature($infos_image_originale, $format);			
124
				$image_redimensionnee = $this->creerMiniature($infos_image_originale, $format);			
144
			}
125
			}
145
		}
126
		}
-
 
127
		
-
 
128
		return $image_redimensionnee;
-
 
129
	}
-
 
130
			
-
 
131
	public function creerEtStockerMiniatureFichierImageSelonFormat($id ,$infos_image_originale, $format = 'O') {
-
 
132
		
-
 
133
		$image_redimensionnee = $this->creerMiniatureImageSelonFormat($infos_image_originale, $format);
Line 146... Line 134...
146
				
134
				
147
		$taux_compression = $this->renvoyerTauxCompressionPourPoids($infos_image_originale['poids_octets']);
135
		$taux_compression = $this->renvoyerTauxCompressionPourPoids($infos_image_originale['poids_octets']);
Line 148... Line 136...
148
		$this->ecrireImageSurDisque($image_redimensionnee, $id, $format, $taux_compression);
136
		$this->ecrireImageSurDisque($image_redimensionnee, $id, $format, $taux_compression);
Line 209... Line 197...
209
		$cote_carre = $taille_reference_pour_format['largeur'];
197
		$cote_carre = $taille_reference_pour_format['largeur'];
210
		$cote_carre_non_redimensionne = 0;
198
		$cote_carre_non_redimensionne = 0;
Line 211... Line 199...
211
		
199
		
212
		if ($this->estPaysage($informations_image)) {	
200
		if ($this->estPaysage($informations_image)) {	
213
				$cote_carre_non_redimensionne = $informations_image['hauteur'];		
201
				$cote_carre_non_redimensionne = $informations_image['hauteur'];		
214
				$debut_largeur_a_copier = ($informations_image['hauteur'] - $informations_image['hauteur'])/2 ;
202
				$debut_largeur_a_copier = ($informations_image['hauteur'] - $cote_carre)/2 ;
-
 
203
				$debut_hauteur_a_copier = 0;
-
 
204
				
-
 
205
				if($debut_largeur_a_copier <= 0) {
-
 
206
					$debut_largeur_a_copier = 0;
-
 
207
				}
215
				$debut_hauteur_a_copier = 0;
208
				
216
				$nb_pixels_largeur_a_copier = $informations_image['hauteur'];
209
				$nb_pixels_largeur_a_copier = $cote_carre_non_redimensionne;
217
				$nb_pixels_hauteur_a_copier = $informations_image['hauteur'];
210
				$nb_pixels_hauteur_a_copier = $cote_carre_non_redimensionne;
218
		} else {
211
		} else {
219
				$cote_carre_non_redimensionne = $informations_image['largeur'];
212
				$cote_carre_non_redimensionne = $informations_image['largeur'];
220
				$debut_largeur_a_copier = 0 ;
213
				$debut_largeur_a_copier = 0 ;
-
 
214
				$debut_hauteur_a_copier = ($informations_image['largeur'] - $cote_carre)/2;
-
 
215
				
-
 
216
				if($debut_hauteur_a_copier <= 0) {
-
 
217
					$debut_hauteur_a_copier = 0;
-
 
218
				}
221
				$debut_hauteur_a_copier = ($informations_image['largeur'] - $informations_image['largeur'])/2;
219
				
222
				$nb_pixels_largeur_a_copier = $informations_image['largeur'];
220
				$nb_pixels_largeur_a_copier = $cote_carre_non_redimensionne;
223
				$nb_pixels_hauteur_a_copier = $informations_image['largeur'];
221
				$nb_pixels_hauteur_a_copier = $cote_carre_non_redimensionne;
Line 224... Line 222...
224
		}
222
		}
Line 225... Line 223...
225
		
223
		
Line 302... Line 300...
302
		
300
		
Line 303... Line 301...
303
		$chemin_sur_serveur_final = $this->obtenirDossierPourFormat($id,$format);
301
		$chemin_sur_serveur_final = $this->obtenirDossierPourFormat($id,$format);
304
		
302
		
-
 
303
		if (!file_exists($chemin_sur_serveur_final))
305
		if (!file_exists($chemin_sur_serveur_final))
304
		{
306
		{
305
			umask(0);
307
			if (mkdir($chemin_sur_serveur_final,$this->droits, true)) {
306
			if (mkdir($chemin_sur_serveur_final,$this->droits, true)) {
308
				chmod($chemin_sur_serveur_final,$this->droits);
307
				chmod($chemin_sur_serveur_final,$this->droits);
309
			}
308
			}
Line 336... Line 335...
336
		$chemin_sur_serveur_final = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/'.$format;
335
		$chemin_sur_serveur_final = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/'.$format;
Line 337... Line 336...
337
		
336
		
338
		return $chemin_sur_serveur_final;
337
		return $chemin_sur_serveur_final;
Line -... Line 338...
-
 
338
	}
-
 
339
	
-
 
340
	public function obtenirCheminImageOriginale($id_image) {
-
 
341
		
-
 
342
		$nom = $this->convertirIdBddVersNomFichier($id_image, 'O');
-
 
343
		$dossier = $this->obtenirDossierPourFormat($id_image,'O');
-
 
344
		
-
 
345
		return $dossier.'/'.$nom;
-
 
346
	}
-
 
347
	
-
 
348
	public function obtenirImageEtInfosPourId($id_image) {
-
 
349
		
-
 
350
		$chemin_image_o = $this->obtenirCheminImageOriginale($id_image);
-
 
351
		return $this->obtenirImageEtInfosPourChemin($chemin_image_o);
339
	}
352
	}
Line 340... Line 353...
340
	
353
	
Line -... Line 354...
-
 
354
	public function obtenirImageEtInfosPourChemin($chemin_fichier) {
-
 
355
		
-
 
356
		$image_et_infos = false;
341
	public function obtenirImageEtInfosPourChemin($chemin_fichier) {
357
		
342
		
358
		if(file_exists($chemin_fichier)) { 
343
		$image_et_infos = array();
359
			
344
		
360
			$image_et_infos = array();
-
 
361
			list($image_et_infos['largeur'], $image_et_infos['hauteur']) = getimagesize($chemin_fichier);		
Line 345... Line 362...
345
		list($image_et_infos['largeur'], $image_et_infos['hauteur']) = getimagesize($chemin_fichier);		
362
			$image_et_infos['poids_octets'] = filesize($chemin_fichier);
346
		$image_et_infos['poids_octets'] = filesize($chemin_fichier);
363
			$image_et_infos['image'] = imagecreatefromjpeg($chemin_fichier);
Line 347... Line 364...
347
		$image_et_infos['image'] = imagecreatefromjpeg($chemin_fichier);
364
			$image_et_infos['chemin'] = $chemin_fichier;
Line 456... Line 473...
456
		
473
		
457
		if (file_exists($chemin_sur_serveur_final.'/'.$nom_fichier)) {
474
		if (file_exists($chemin_sur_serveur_final.'/'.$nom_fichier)) {
458
			unlink($chemin_sur_serveur_final.'/'.$nom_fichier);
475
			unlink($chemin_sur_serveur_final.'/'.$nom_fichier);
Line 459... Line 476...
459
		}
476
		}
460
		
477
		
461
		// attention ceci ne preserve pas les metadonnées
478
		// attention, ceci ne preserve pas les metadonnées
462
		imagejpeg($image_binaire, $chemin_sur_serveur_final.'/'.$nom_fichier, $compression);
479
		imagejpeg($image_binaire, $chemin_sur_serveur_final.'/'.$nom_fichier, $compression);
Line 463... Line 480...
463
		chmod($chemin_sur_serveur_final.'/'.$nom_fichier,$this->droits);
480
		chmod($chemin_sur_serveur_final.'/'.$nom_fichier,$this->droits);
Line 464... Line -...
464
	}
-
 
465
		
481
	}
Line 466... Line 482...
466
	public function ecrireImageSurDisqueAvecMeta($image_a_stocker, $compression = 100) {
482
		
467
 
483
	public function ecrireImageSurDisqueAvecMeta($image_a_stocker, $compression = 100) {
468
		$image_a_stocker = new Imagick();
484
 
469
		$image_a_stocker->readImageBlob($image_a_stocker);
485
		$image_a_stocker = new Imagick($image_a_stocker);
470
	
486
	
471
		// l'utilisation d'image magick préserve les métadonnées lors d'une recompression
487
		// l'utilisation d'image magick préserve les métadonnées lors d'une recompression
Line 472... Line 488...
472
		$image_a_stocker->setformat("jpeg");
488
		$image_a_stocker->setformat("jpeg");
473
		$image_a_stocker->setImageCompression(imagick::COMPRESSION_JPEG); 
489
		$image_a_stocker->setImageCompression(imagick::COMPRESSION_JPEG); 
Line 474... Line 490...
474
		$image_a_stocker->setCompressionQuality($compression);
490
		$image_a_stocker->setCompressionQuality($compression);
Line 475... Line 491...
475
		$image_a_stocker->writeImage($chemin_fichier);
491
		$image_a_stocker->writeImage($image_a_stocker);
Line 528... Line 544...
528
	function opticrop($informations_image, $format) {
544
	function opticrop($informations_image, $format) {
Line 529... Line 545...
529
 
545
 
Line 530... Line 546...
530
		umask(0);
546
		umask(0);
-
 
547
		
-
 
548
		$nom_temp = md5(time());
531
		
549
		$chemin_temp = 
Line 532... Line 550...
532
		$nom_temp = md5(time());
550
		
Line 533... Line 551...
533
		$out = '/home/aurelien/web/file_tmp/'.$nom_temp;
551
		$out = $this->config['cel_db']['chemin_stockage_temp'].'/'.$nom_temp;
534
		
552