Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将raphaeljs导出为jpg时出错,路径背景为图像_Php_Javascript_Svg_Raphael - Fatal编程技术网

Php 将raphaeljs导出为jpg时出错,路径背景为图像

Php 将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.

我对raphaeljs导出插件()有问题。 在path元素中,我使用attribute
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')
    
对于这些东西:

$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()
。请参阅:

快速猜测:提供完整的url(带有域名),或者如果失败,提供图像的本地路径(在
填充
属性中)
convert
不知道您的网站、域或任何关于它的信息。在我的svg中,我也有
,这是正确的转换,它不是以
url(
那里,它可以解释为本地路径。但是为什么要争论呢?测试我告诉你!:)你是对的,我应该尝试一下。。但是我已经检查过了,还是什么都没有。在我的网页上一切都很好。在我的svg上,我有完整的url(http://....)我不知道这是否重要,但在我的代码检查器上,我有这个路径作为
知道吗?你可以尝试使用本地文件路径,但如果不起作用,没有其他人回答:我现在不在了,但是如果您将完整的svg xml粘贴到某个地方,我将看看明天是否可以尝试一下。