Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev 805 Rev 807
Line 412... Line 412...
412
					$message = "Impossible de générer l'image sur le serveur. Extension ImageMagick abscente.";
412
					$message = "Impossible de générer l'image sur le serveur. Extension ImageMagick abscente.";
413
					$code = RestServeur::HTTP_CODE_ERREUR;
413
					$code = RestServeur::HTTP_CODE_ERREUR;
414
					throw new Exception($message, $code);
414
					throw new Exception($message, $code);
415
				}
415
				}
416
			} else if ($this->convertisseur == 'rsvg') {
416
			} else if ($this->convertisseur == 'rsvg') {
417
				$png = $this->convertirEnPNGAvecRsvg($svg);
417
				$png = Commun::convertirEnPNGAvecRsvg($this->getIdFichier(), $this->config['cache_stockageChemin'], $svg);
418
			} else {
418
			} else {
419
				$message = "Le convertisseur indiqué '{$this->convertisseur}' ne fait pas parti de la liste ".
419
				$message = "Le convertisseur indiqué '{$this->convertisseur}' ne fait pas parti de la liste ".
420
					"des convertisseurs disponibles : imagick, rsvg.";
420
					"des convertisseurs disponibles : imagick, rsvg.";
421
				$code = RestServeur::HTTP_CODE_ERREUR;
421
				$code = RestServeur::HTTP_CODE_ERREUR;
422
				throw new Exception($message, $code);
422
				throw new Exception($message, $code);
Line 439... Line 439...
439
		$convertisseur->clear();
439
		$convertisseur->clear();
440
		$convertisseur->destroy();
440
		$convertisseur->destroy();
441
		return $png;
441
		return $png;
442
	}
442
	}
Line 443... Line -...
443
 
-
 
444
	private function convertirEnPNGAvecRsvg($svg) {
-
 
445
		$idFichier = $this->getIdFichier();
-
 
446
 
-
 
447
		// test répertoire de cache
-
 
448
		if(!is_dir($this->config['cache_stockageChemin'])) {
-
 
449
			mkdir($this->config['cache_stockageChemin'], 0777, true);
-
 
450
		}
-
 
451
		if(!is_dir($this->config['cache_stockageChemin'])) {
-
 
452
			error_log(__FILE__ . ": can't create cache {$this->config['cache_stockageChemin']}");
-
 
453
			return NULL;
-
 
454
		}
-
 
455
 
-
 
456
		// test présence du binaire de conversion (rsvg)
-
 
457
		/*
-
 
458
		  // `which` no possible using safe-mode...
-
 
459
		$i = $s = NULL;
-
 
460
		exec('which rsvg-convert', $s, $i);
-
 
461
		if($i != 0) {
-
 
462
			error_log(__FILE__ . ": no rsvg-convert binary");
-
 
463
			return NULL;
-
 
464
		}
-
 
465
		*/
-
 
466
		// conversion svg => png
-
 
467
		$fichierPng = $this->config['cache_stockageChemin'].$idFichier.'.png';
-
 
468
		$fichierSvg = $this->config['cache_stockageChemin'].$idFichier.'.svg';
-
 
469
		file_put_contents($fichierSvg, $svg);
-
 
470
		$i = $s = NULL;
-
 
471
		$rsvg = exec("rsvg-convert $fichierSvg -d 75 -p 75 -o $fichierPng", $s, $i);
-
 
472
		if($i != 0) {
-
 
473
			error_log(__FILE__ . ": `rsvg-convert $fichierSvg -o $fichierPng` returned $i: " . implode(', ', $s));
-
 
474
			return NULL;
-
 
475
		}
-
 
476
 
-
 
477
		$this->indexerFichierPng($fichierPng);
-
 
478
		return file_get_contents($fichierPng);
-
 
479
	}
-
 
480
 
-
 
481
	private function indexerFichierPng($fichierPng) {
-
 
482
		$img = imagecreatefrompng($fichierPng);
-
 
483
		imagetruecolortopalette($img, false, 32);
-
 
484
		$blanc = imagecolorallocate($img, 255, 255, 255);
-
 
485
		imagefill($img, 0, 0, $blanc);
-
 
486
		imagepng($img, $fichierPng, 9, PNG_ALL_FILTERS);
-
 
487
	}
-
 
488
 
443
 
489
	private function getIdFichier() {
444
	private function getIdFichier() {
490
		$id = '';
445
		$id = '';
491
		foreach ($this->taxonsDemandes as $reftax => $ids) {
446
		foreach ($this->taxonsDemandes as $reftax => $ids) {
492
			$id[] = $reftax;
447
			$id[] = $reftax;