Tôi đang cố gắng sử dụng Image-Magick với PHP để chuyển đổi văn bản SVG thành hình ảnh PNG. SVG này là biểu đồ được tạo với NVD3 và tôi muốn cho phép người dùng tải xuống biểu đồ dưới dạng hình ảnh.readimageblob: Lỗi nghiêm trọng khi chuyển đổi SVG thành PNG
Về cơ bản, tôi đang gửi dữ liệu SVG, được mã hóa bằng JSON tới trình xử lý PHP được cho là xuất dưới dạng hình ảnh PNG.
Nhưng, điều này ném lên các lỗi sau:
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('
Kịch bản PHP để chuyển đổi hình ảnh:
<?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);
Ví dụ SVG, được tạo ra bởi NVD3: http://pastebin.com/Z3TvDK16
Đây là trên một máy chủ với PHP 5.3 và Imagick Ubuntu
Rất có thể cài đặt Imagick của bạn thiếu đại biểu phù hợp. Xem [ImageMagick chuyển đổi SVG sang PNG không hoạt động với tính năng RSVG được bật] (http://stackoverflow.com/q/11592085) –