【问题标题】:Imagick with SVG from HTML-Domnode来自 HTML-Domnode 的 SVG 的 Imagick
【发布时间】:2014-05-23 12:43:32
【问题描述】:

我正在尝试通过 php 将 svg 图像转换为 html 字符串。

$im = new Imagick();
$svgNode = "<?xml version='1.0' encoding='UTF-8' standalone='no'?><svg id='mySVG' xmlns='http://www.w3.org/2000/svg' version='1.1'><g id='viewport'></g></svg>";
$im->readimageblob($svgNode);

只有这 3 行会导致错误:

no decode delegate for this image format `/tmp/magick-ao323XDs' @ error/svg.c/ReadSVGImage/2871\n

我不知道我的错误是什么。 xml在那里,svg是我能想象的最简单的^^。

【问题讨论】:

    标签: php svg imagick


    【解决方案1】:

    Imagick 下实际处理图像的库 ImageMagick 要求您通过 width 和 height 属性设置 SVG 图像的大小,例如这行得通:

    $im = new Imagick();
    $svgNode = "<?xml version='1.0' encoding='UTF-8' standalone='no'?>
    <svg id='mySVG' xmlns='http://www.w3.org/2000/svg' version='1.1' width='158px' height='92px'>
    <g id='viewport'></g>
    </svg>";
    $im->readimageblob($svgNode);
    

    【讨论】:

    • 嗨。有了这个例子,它现在可以工作了。使用来自 requestpayload 的 urlencoded 数据,它不起作用。 w3.org/2000/svg" version="1.1" width="1834" height="910"> g> 这是 urlencoded。在 PHP 中我这样做: $request_body = file_get_contents('php://input'); $im = 新的想象(); $svgNode = substr($request_body,8); $im->readimageblob(urldecode($svgNode));异常abgefangen:没有此图像格式的解码委托`'@error/blob.c/BlobToImage/
    • @dobberph 这不是有效的 SVG 或 XML。它在开头的 SVG 块中有一个错误的分号。
    猜你喜欢
    • 2020-01-23
    • 2012-07-09
    • 2013-07-26
    • 1970-01-01
    • 2011-05-23
    • 2015-01-17
    • 2017-05-17
    • 1970-01-01
    相关资源
    最近更新 更多