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