Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 806 → Rev 807

/trunk/services/modules/0.1/commun/Commun.php
452,5 → 452,52
}
return $this->RestClient;
}
 
 
/**
* Génération de fichiers pour les cartes
*/
static function convertirEnPNGAvecRsvg($idFichier, $chemin, $svg) {
// test répertoire de cache
if(!is_dir($chemin)) {
mkdir($chemin, 0777, true);
}
if(!is_dir($chemin)) {
error_log(__FILE__ . ": can't create cache {$chemin}");
return NULL;
}
 
// test présence du binaire de conversion (rsvg)
/*
// `which` no possible using safe-mode...
$i = $s = NULL;
exec('which rsvg-convert', $s, $i);
if($i != 0) {
error_log(__FILE__ . ": no rsvg-convert binary");
return NULL;
}
*/
// conversion svg => png
$fichierPng = $chemin.$idFichier.'.png';
$fichierSvg = $chemin.$idFichier.'.svg';
file_put_contents($fichierSvg, $svg);
$i = $s = NULL;
$rsvg = exec("rsvg-convert $fichierSvg -d 75 -p 75 -o $fichierPng", $s, $i);
if($i != 0) {
error_log(__FILE__ . ": `rsvg-convert $fichierSvg -o $fichierPng` returned $i: " . implode(', ', $s));
return NULL;
}
 
self::indexerFichierPng($fichierPng);
return file_get_contents($fichierPng);
}
 
static function indexerFichierPng($fichierPng) {
$img = imagecreatefrompng($fichierPng);
imagetruecolortopalette($img, false, 32);
$blanc = imagecolorallocate($img, 255, 255, 255);
imagefill($img, 0, 0, $blanc);
imagepng($img, $fichierPng, 9, PNG_ALL_FILTERS);
}
}
?>
/trunk/services/modules/0.1/bdtxa/cartes/TaxonsCartes.php
423,7 → 423,7
throw new Exception($message, $code);
}
} else if ($this->convertisseur == 'rsvg') {
$png = $this->convertirEnPNGAvecRsvg($svg);
$png = Commun::convertirEnPNGAvecRsvg($this->getIdFichier(), $this->config['cache_stockageChemin'], $svg);
} else {
$message = "Le convertisseur indiqué '{$this->convertisseur}' ne fait pas parti de la liste ".
"des convertisseurs disponibles : imagick, rsvg.";
450,27 → 450,6
return $png;
}
 
private function convertirEnPNGAvecRsvg($svg) {
$idFichier = $this->getIdFichier();
$fichierPng = $this->config['cache_stockageChemin'].$idFichier.'.png';
$fichierSvg = $this->config['cache_stockageChemin'].$idFichier.'.svg';
file_put_contents($fichierSvg, $svg);
$commande = "rsvg-convert $fichierSvg -d 75 -p 75 -o $fichierPng";
$rsvg = exec($commande);
 
$this->indexerFichierPng($fichierPng);
$png = file_get_contents($fichierPng);
return $png;
}
 
private function indexerFichierPng($fichierPng) {
$img = imagecreatefrompng($fichierPng);
imagetruecolortopalette($img, false, 32);
$blanc = imagecolorallocate($img, 255, 255, 255);
imagefill($img, 0, 0, $blanc);
imagepng($img, $fichierPng, 9, PNG_ALL_FILTERS);
}
 
private function getIdFichier() {
$id = '';
foreach ($this->taxonsDemandes as $reftax => $ids) {
/trunk/services/modules/0.1/chorodep/cartes/TaxonsCartes.php
414,7 → 414,7
throw new Exception($message, $code);
}
} else if ($this->convertisseur == 'rsvg') {
$png = $this->convertirEnPNGAvecRsvg($svg);
$png = Commun::convertirEnPNGAvecRsvg($this->getIdFichier(), $this->config['cache_stockageChemin'], $svg);
} else {
$message = "Le convertisseur indiqué '{$this->convertisseur}' ne fait pas parti de la liste ".
"des convertisseurs disponibles : imagick, rsvg.";
441,51 → 441,6
return $png;
}
 
private function convertirEnPNGAvecRsvg($svg) {
$idFichier = $this->getIdFichier();
 
// test répertoire de cache
if(!is_dir($this->config['cache_stockageChemin'])) {
mkdir($this->config['cache_stockageChemin'], 0777, true);
}
if(!is_dir($this->config['cache_stockageChemin'])) {
error_log(__FILE__ . ": can't create cache {$this->config['cache_stockageChemin']}");
return NULL;
}
 
// test présence du binaire de conversion (rsvg)
/*
// `which` no possible using safe-mode...
$i = $s = NULL;
exec('which rsvg-convert', $s, $i);
if($i != 0) {
error_log(__FILE__ . ": no rsvg-convert binary");
return NULL;
}
*/
// conversion svg => png
$fichierPng = $this->config['cache_stockageChemin'].$idFichier.'.png';
$fichierSvg = $this->config['cache_stockageChemin'].$idFichier.'.svg';
file_put_contents($fichierSvg, $svg);
$i = $s = NULL;
$rsvg = exec("rsvg-convert $fichierSvg -d 75 -p 75 -o $fichierPng", $s, $i);
if($i != 0) {
error_log(__FILE__ . ": `rsvg-convert $fichierSvg -o $fichierPng` returned $i: " . implode(', ', $s));
return NULL;
}
 
$this->indexerFichierPng($fichierPng);
return file_get_contents($fichierPng);
}
 
private function indexerFichierPng($fichierPng) {
$img = imagecreatefrompng($fichierPng);
imagetruecolortopalette($img, false, 32);
$blanc = imagecolorallocate($img, 255, 255, 255);
imagefill($img, 0, 0, $blanc);
imagepng($img, $fichierPng, 9, PNG_ALL_FILTERS);
}
 
private function getIdFichier() {
$id = '';
foreach ($this->taxonsDemandes as $reftax => $ids) {