动态SVG图像生成的问题

Ksh*_*KJ- 5 html php svg

我正在尝试编写服务器端脚本(PHP),以根据用户输入生成SVG图像.我使用以下代码:

<?php

echo '<?xml version="1.0" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<head><meta http-equiv="Content-Type" content="svg+xml" /></head>

<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">

<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red"/>

</svg>';

?>
Run Code Online (Sandbox Code Playgroud)

我在某处读到MIME类型必须是svg + xml所以我尝试在内容类型中设置它,如上所示.Firefox正在接收正确的代码,但图像未呈现.有人知道这里要改变什么吗?

Pas*_*TIN 25

根据维基百科上的SVG页面,SVG应该作为image/svg+xml.
另请参阅:1.2 SVG MIME类型,文件扩展名和Macintosh文件类型

以下meta:

<meta http-equiv="Content-Type" content="svg/xml" />
Run Code Online (Sandbox Code Playgroud)

没有定义从服务器提供内容的方式 - 当你无法定义它的服务方式时,它更像是为HTML页面提供信息的方式......
而且,我不确定是否元素在SVG规范中有效- 我会让你检查^^


您需要做的是从服务器发送HTTP标头,指示数据的内容类型.

这是使用PHP header函数完成的; 在你的情况下:

header('Content-type: image/svg+xml');

echo '<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red"/>
</svg>';
Run Code Online (Sandbox Code Playgroud)

注意 :

  • 我删除了<meta><head>标签; 不确定是否<head>应该删除,但是,因为它是空的....
  • 我已经添加了对header函数的调用
  • 火狐正确显示SVG红色圆圈 - 所以,似乎工作;-)

希望这可以帮助 !