/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) { |