SVG图像不使用参数

时间:2014-04-21 15:42:14

标签: php image svg

我正在尝试创建一个接收参数的SVG,但出于某种原因,它并没有应用它们......

我有以下SVG文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="1" height="1"
     xmlns:svg="http://www.w3.org/2000/svg"
     xmlns="http://www.w3.org/2000/svg"
     version="1.1">
    <defs>
        <ref id="paramFill" param="color" default="#000000"/>
        <ref id="paramOpacity" param="opacity" default="1"/>
    </defs>
    <polygon points="0,0 1,0 1,1 0,1"
         style="fill:url(#paramFill);fill-opacity:url(#paramOpacity);fill-rule:evenodd;" />
</svg>

调用SVG文件的PHP看起来像这样,但是当页面上显示图像时,我得到一个全黑图像。为什么不使用我的参数?只应创建两种颜色:#9999FF#FFFFFF为什么使用默认颜色?

<?php
// Inside a loop:
$color = ($chi == $i && $chj == $j) ? "#9999FF" : "#FFFFFF";
echo "<td style='background-image: url(/Websites/test.org/images/bg.svg?color=$color);'></td>";

1 个答案:

答案 0 :(得分:1)

你正在将#填入网址。 #(您的颜色值)之后的任何内容都不会被视为颜色值 - 它将被视为页面锚点引用。

... url(/.....?color=#9999ff); ...
                     ^---anchor

将提取浏览器

... url(/....?color=)

如果它是一个HTML页面,那么它会尝试向下滚动到<a name="9999ff">,这在svg上是不可能的。

至少尝试urlencode()

...?color=%239999ff
          ^^^---url-encoded #