我的raphaeljs导出插件(https://github.com/ElbertF/Raphael.Export)有问题。
在路径元素中我使用属性fill
并作为源我给图像url填充。但是当我将它导出到SVG时,我看到了一个路径元素定义,但是当我将它导出到PNG时,我再也看不到了。
因此,在我的应用中,我添加attr
到path
元素,如下所示:
paper.path("M 195 10 L 300 L 195 z").attr({'stroke-width': 0,'fill': 'url(images/alfen/02/murek.png)'});
我将其导出为paper.toSVG()
在我的SVG中我找到了一条路径:
<path transform="matrix(1,0,0,1,0,0)" fill="url(images/alfen/02/murek.png)" stroke="#000" d="M203,183.94389438943895L948,183.94389438943895L948,195L203,195Z" stroke-width="0"></path>
但是当我用“
”将其转换为PNG时<?php
$json = $_POST['json'];
$output = str_replace('\"','"',$json);
$filenameSVG = 'test';
file_put_contents("$filenameSVG.svg", $output);
$konwert = "convert $filenameSVG.svg $filenameSVG.jpg";
system($konwert);
我无法找到满足我背景的这条道路。有人可以帮忙吗?
答案 0 :(得分:1)
如果您能够正确输出到svg但是它无法在php中执行png,那么您需要检查几件事。
$output = str_replace('\"','"',$json);
$output = str_replace('\"','"',$json['filename_and_path']);
如果你返回的json是一行,可能有更好的方法来处理它 - 即将它作为字符串发布,或者甚至用数组和索引返回每一行。对于这个东西:
$konwert = "convert $filenameSVG.svg $filenameSVG.jpg";
system($konwert);
您可能无法在字符串中为system()
提供有效变量。为了确保我建议正确连接字符串,如:
$konwert = "convert".$filenameSVG.".svg ".$filenameSVG.".jpg";
您还需要服务器上文件的绝对文件路径来执行命令,否则它将无法找到该文件。如果这两个文件位于项目的根目录中,代码$konwert = "convert".$filenameSVG.".svg ".$filenameSVG.".jpg";
显然只适合您。
我也不认为你应该在这个例子中使用system()
。我的理解是你应该使用passthru()
来处理图像二进制文件。还有exec()
,但实际上,我认为你需要的是passthru()
。请参阅:http://www.php.net/manual/en/function.passthru.php
答案 1 :(得分:0)
看起来您的路径只是为图像设置容器。你不能用:
paper.image('images/alfen/02/murek.png', 50, 50, 300, 195);
似乎它可能更可靠。您可以将其用作启动器并添加您喜欢的路径。我在使用图像作为填充时遇到了问题,因为它们似乎永远不会呈现我期望它们的位置。
您仍然可以使用:paper.toSVG()
我能够毫无困难地转换该版本。