【发布时间】:2018-05-06 07:07:21
【问题描述】:
我正在尝试使用从 fabric js 获得的 svg 原始数据创建 svg 图像。我使用下面的代码使用 svg 原始数据生成 svg,但它不能正常工作。
public function generate_svg($raw_svg='',$prefix='',$folder_name='card_image')
{
$file_name = '';
if($raw_svg!='')
{
try{
$file_name = uniqid($prefix).".svg";
$image = new \Imagick();
$image->readImageBlob($raw_svg);
$image->setImageFormat("svg");
$image->writeImage($folder_name.$file_name);
} catch (ImagickException $ex) {
echo $ex->getMessage();
}
}
return $file_name;
}
现在的问题是背景图片如下所示:
那我应该怎么做才能解决这个问题?
它应该如下所示(忽略正方形和圆形),问题是整个背景看起来像黑色而不是背景图像。:
所以问题是背景图片没有加载,所以我是否必须添加额外的库才能做到这一点或其他任何事情?
Imagick 版本:6.7.7
convert -list delegate | grep svg
cdr => "uniconvertor' '%i' '%o.svg'; /bin/mv '%o.svg' '%o"
cgm => "uniconvertor' '%i' '%o.svg'; /bin/mv '%o.svg' '%o"
dot => "dot' -Tsvg '%i' -o '%o"
dxf => "uniconvertor' '%i' '%o.svg'; /bin/mv '%o.svg' '%o"
fig => "uniconvertor' '%i' '%o.svg'; /bin/mv '%o.svg' '%o"
svg => "rsvg-convert' -o '%o' '%i"
convert -list format | grep SVG
MSVG rw+ ImageMagick's own SVG internal renderer
SVG rw+ Scalable Vector Graphics (XML 2.9.1)
SVGZ rw+ Compressed Scalable Vector Graphics (XML 2.9.1)
【问题讨论】:
-
它应该是什么样子?您尚未提供图片。
-
@MarkSetchell 更新了问题。
-
@MarkSetchell 这里是原始数据:codepen.io/dhavalsisodiya/pen/XewGey
-
然而,我使用相同的原始数据来生成 png 文件,上面代码中唯一的变化是将图像格式设置为 png24。早些时候,我在 png 对话中遇到了同样的问题,我使用了这个:SVG rw+ Scalable Vector Graphics (XML 2.9.1)。所以我需要安装任何其他将创建 svg 文件的库。
-
基本的IM转换器。安装 librsvg(首选)或 Inkscape。 ImageMagick 应该能够自动委托给其中之一。您可以使用
convert -list delegate | grep svg进行测试
标签: php svg imagemagick imagick