Php 将raphaeljs导出为jpg时出错,路径背景为图像
我对raphaeljs导出插件()有问题。 在path元素中,我使用attributePhp 将raphaeljs导出为jpg时出错,路径背景为图像,php,javascript,svg,raphael,Php,Javascript,Svg,Raphael,我对raphaeljs导出插件()有问题。 在path元素中,我使用attributefill,并将图像url作为源代码提供给fullfill。但当我将其导出到SVG时,我看到了路径元素定义,但当我将其导出到PNG时,我再也看不到了 因此,在我的应用程序中,我添加了一个attr到path元素,如下所示: paper.path("M 195 10 L 300 L 195 z").attr({'stroke-width': 0,'fill': 'url(images/alfen/02/murek.
fill
,并将图像url作为源代码提供给fullfill。但当我将其导出到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);
看起来您的路径只是为图像设置了一个容器。你不能使用:
paper.image('images/alfen/02/murek.png', 50, 50, 300, 195);
看起来它可能更可靠。你可以用它作为你的起点,在你喜欢的时候加入任何路径。我在使用图像作为填充时遇到了一些问题,因为它们似乎从未在我期望的地方进行渲染
您仍然可以使用:paper.toSVG()
我能够毫不费力地转换该版本。如果您能够正确输出到svg,但无法在php中转换为png,那么您需要检查以下几点
- 作为正常检查,请确保您的$\u POST['json']没有返回格式错误的json
- php中的下一行让我感到困惑:
$output=str\u replace(“\”、““”、$json)代码>
- 您返回的json可能是单个对象,但我仍然不确定为什么要搜索整个文件,而不是查找特定的嵌套对象,如
$output=str\u replace(“\”,““”,$json['filename\u and_path')如果返回的json是一行,那么可能有更好的方法来处理它——例如,将其作为字符串发布,甚至返回每个带有数组和索引的json
对于这些东西:
$konwert = "convert $filenameSVG.svg $filenameSVG.jpg";
system($konwert);
您可能没有在字符串中输入有效变量的system()
。为了确保正确连接字符串,我建议如下所示:
$konwert = "convert".$filenameSVG.".svg ".$filenameSVG.".jpg";
您还需要服务器上文件的绝对文件路径来执行命令,否则它将找不到文件。代码$konwert=“convert”。$filenameSVG。“.svg”。$filenameSVG。“.jpg”显然,只有当这两个文件位于项目的根目录中时,code>才会对您起作用
我也不认为在这种情况下应该使用system()
。我的理解是,您应该使用passthru()
来处理图像二进制文件。还有exec()
,但实际上,我认为这里需要的是passthru()
。请参阅:快速猜测:提供完整的url(带有域名),或者如果失败,提供图像的本地路径(在填充
属性中)convert
不知道您的网站、域或任何关于它的信息。在我的svg中,我也有
,这是正确的转换,它不是以url(
那里,它可以解释为本地路径。但是为什么要争论呢?测试我告诉你!:)你是对的,我应该尝试一下。。但是我已经检查过了,还是什么都没有。在我的网页上一切都很好。在我的svg上,我有完整的url(http://....)我不知道这是否重要,但在我的代码检查器上,我有这个路径作为
知道吗?你可以尝试使用本地文件路径,但如果不起作用,没有其他人回答:我现在不在了,但是如果您将完整的svg xml粘贴到某个地方,我将看看明天是否可以尝试一下。