Próbuję użyć Image-Magick z PHP, aby przekonwertować tekst SVG na obraz PNG. Ten SVG to wykres wygenerowany przy użyciu NVD3 i chciałbym, aby moi użytkownicy mogli pobrać go jako obraz.readimageblob: Błąd krytyczny podczas konwersji SVG do PNG
Zasadniczo wysyłam dane SVG, zakodowane za pomocą JSON-a do programu obsługi PHP, który ma wyprowadzić go jako obraz PNG.
Ale to rzuca się następujący błąd:
Fatal error: Uncaught exception 'ImagickException' with message 'no decode delegate for this image format `' @ blob.c/BlobToImage/347' in svg2png.php:4 Stack trace: #0 svg2png.php(4): Imagick->readimageblob('
skrypt PHP do konwersji obrazu:
<?php
/* Derived in part from: http://stackoverflow.com/a/4809562/937891 */
$svg=json_decode($_REQUEST["svgData"]);
$im=new Imagick();
$im->readImageBlob($svg);
$im->setImageFormat("png24");
header("Content-Type: image/png");
$thumbnail = $im->getImageBlob();
echo $thumbnail;
?>
HTML:
<form id="exportSpendTrendTrigger" method="POST" action="svg2png.php" target="_blank">
<input id="exportSpendTrendSvgData" type="hidden" name="svgData" />
<input type="submit" class="btn" value="Export" />
</form>
<div id="spendtrend">
<svg></svg>
</div>
jQuery:
exportSpendTrend = function (e) {
//Show the user the PNG-image version for download
$("#exportSpendTrendSvgData").val(JSON.stringify($("#spendtrend").html().trim()));
}
$("#exportSpendTrendTrigger").on("submit", exportSpendTrend);
Przykład SVG generowane przez NVD3: http://pastebin.com/Z3TvDK16
ten znajduje się na serwerze Ubuntu PHP 5.3 i Imagick
Najprawdopodobniej w instalacji Imagick brakuje właściwego uczestnika. Zobacz [ImageMagick przekonwertować SVG do PNG nie działa z włączonym RSVG] (http://stackoverflow.com/q/11592085) –