我正在运行ImageMagick 6.7.4-0和Imagick 3.0.1。
我拥有SVG所需的所有代表(convert -list configure | grep DELEGATES
的输出显示bzlib djvu fontconfig freetype gvc jpeg jng jp2 lcms lqr openexr png rsvg tiff x11 xml wmf zlib
)。
以下是一些示例PHP代码,用于将非常简单的SVG转换为PNG:
$file = 'baseball.svg';
$im = new Imagick();
$im->readImage($file);
$im->setImageFormat("png32");
header("Content-Type: image/png");
print $im->getImageBlob();
我从服务器得到503响应; PHP没有报告,也没有记录。我启用了所有php错误,启用了显示错误,启用了日志错误等。我可以从.png转换为.jpg,所有这些都很好。
还有一个重要的注意事项 - 我能够在这台服务器上使用SVG几个月,但我不得不将ImageMagick从6.6.x升级到6.7.x以获得与文本失真相关的一些错误。我首先尝试了最新版本(6.7.4-10)但无法任何转换工作,所以我降级到6.7.4-0并且所有转换除了SVG 再次工作。我只是不能排除这个!
编辑:在Ubuntu 10.04上运行。服务器是Litespeed 4.0.10。
编辑2:我刚刚发现此代码 - 从命令行(php test.php
)运行时 - 实际上确实创建了.png完全来自.svg,即使它报告“分段错误”。从浏览器运行此脚本不会生成任何文件。
$file = 'baseball.svg';
$im = new Imagick();
$im->setBackgroundColor(new ImagickPixel('transparent'));
$im->readImage($file);
$im->setImageFormat("png32");
$fp = fopen(time() . '.png', 'w');
fwrite($fp, $im->getimageblob());
fclose($fp);
答案 0 :(得分:1)
您可能没有安装实际的RSVG 二进制软件包。
答案 1 :(得分:0)
我尝试了ImageMagick 6.7.x以及Imagick版本的每个组合,没有运气(总是段错误,但命令行PHP至少能够创建文件)
我尝试了ImageMagick 6.6.x以及Imagick版本的每个组合,仍然没有运气(总是段错误,命令行PHP无法创建任何东西)。
我尝试为ImageMagick添加所有必需和建议的依赖项,然而,暂时没有运气。
我删除了Imagick,卸载了ImageMagick,然后运行了apt-get install libmagickcore3-extra imagemagick --fix-missing
。然后运行pecl install imagick-3.0.1
。
Voila,所有工作都按预期工作,但回到我尝试升级ImageMagick 之前的状态。我似乎无法在Ubuntu上使用自动编译的ImageMagick / Imagick完全使用SVG。