我尝试了很多不同的解决方案,但不能使用Imagick :: readImageBlob,任何帮助都会受到赞赏。
错误讯息:
Caught exception: no decode delegate for this image format `' @ error/blob.c/BlobToImage/364
代码:
$svg = file_get_contents($this->svg);
$image = new Imagick();
$image->readImageBlob($svg);
//...
SVG:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" version="1.1" width="928" height="933" id="parent">
<image width="928" height="933" xlink:href="image.jpg" ></image>
<path id="path1" fill="none" d="M100,656.5c-105.1-200.5-28.1-448,172-553s447.5-27.5,552.6,173s28.1,448-172,553 S205.1,856.9,100,656.5z"/>
<text text-anchor="middle">
<textPath xlink:href="#path1" startOffset="33.3333%">
<tspan>top</tspan>
</textPath>
</text>
<path id="path2" fill="none" d="M121.8,264.8C10.2,453.3,72.2,696.3,260.3,807.7s431,48.9,542.6-139.5 s49.5-431.5-138.5-542.8S233.3,76.4,121.8,264.8z"/>
<text text-anchor="middle">
<textPath xlink:href="#path2" startOffset="33.3333%">
<tspan>bund</tspan></textPath>
</text>
</svg>
答案 0 :(得分:3)
对我来说,这些代表缺失了(ubuntu 16.04):
sudo apt-get install libgraphicsmagick1-dev libmagickcore-dev libmagickcore-6.q16-2 libmagickcore-6.q16-2-extra
预期产出:
identify -list format | grep SVG
MSVG SVG rw+ ImageMagick's own SVG internal renderer
SVG SVG rw+ Scalable Vector Graphics (RSVG 2.40.13)
SVGZ SVG rw+ Compressed Scalable Vector Graphics (RSVG 2.40.13)
答案 1 :(得分:1)
对于将来读这篇文章的人来说,我有同样的问题。问题是我缺少libxml2和librsvg2-bin。
答案 2 :(得分:1)
在@Native Coder和@karser回答后,我的SVG仍生成相同的no解码委托错误。在我将<?xml version="1.0" encoding="UTF-8" standalone="no"?>
添加为SVG内容的开始行之后,它起作用了。值得检查您的XML是否也有效。
答案 3 :(得分:0)
我能够通过安装inkscape来解决此问题。
apt-get install inkscape
答案 4 :(得分:0)
使用 Ubuntu 20.04,我运行了以下安装 libmagickcore-6
软件包的命令。
此软件包向 MagickCore 添加了对 SVG、WMF、OpenEXR、DjVu 和 Graphviz 的支持。 有几个不同的版本,例如,其中一个版本编译为具有高动态范围的 16 位通道深度(Q16HDRI)。
sudo apt install libmagickcore-6*
使用上面的命令,我好像安装了所有不同的版本。不确定这是否是最好的斜线最有效的方式,但它确实解决了这个问题。