用PHP将SVG图像转换为PNG

用PHP将SVG图像转换为PNG

我正在做一个网络项目,它涉及到一个基于一组数据的动态生成的美国地图,对不同的状态进行着色。

这个SVG文件给了我一个很好的美国空白地图,很容易改变每个州的颜色。困难在于IE浏览器不支持SVG,因此为了使用SVG提供的方便语法,我需要将它转换为JPG。

理想情况下,我希望只使用GD2库,但也可以使用ImageMagick。我完全不知道该怎么做。

任何允许我动态改变美国地图上各州颜色的解决方案都将被考虑。关键是它是很容易改变颜色的动态和它是跨浏览器。仅限PHP/Apache解决方案。


倚天杖
浏览 763回答 3
3回答

潇潇雨雨

您提到这样做是因为IE不支持SVG。好消息是IE是吗?支持矢量图形。好的,所以它是一种叫做VML的语言,只有IE支持,而不是SVG,但是它在那里,你可以使用它。GoogleMaps等将检测浏览器功能,以确定是为SVG服务还是为VML服务。然后是拉斐尔图书馆,它是一个基于Javascript浏览器的图形库,它支持SVG或VML,这同样取决于浏览器。另一个可能有助于:SVGWeb.所有这一切意味着,您可以支持您的IE用户,而不必求助于位图图形。也请参阅这个问题的最上面的答案,例如:XSL将SVG转换为VML

撒科打诨

这很容易,在过去的几周里一直在做这方面的工作。你需要蜡染SVG工具包..下载,以及将文件与要转换为JPEG的SVG放在同一个目录中。,也要确保您先解压缩它。打开终端,运行以下命令:java -jar batik-rasterizer.jar -m image/jpeg -q 0.8 NAME_OF_SVG_FILE.svg它应该输出SVG文件的JPEG。真的很容易。您甚至可以将它放在循环中并转换负载的SVG,import os svgs = ('test1.svg', 'test2.svg', 'etc.svg') for svg in svgs:     os.system('java -jar batik-rasterizer.jar -m image/jpeg -q 0.8 '+str(svg)+'.svg')
打开App,查看更多内容
随时随地看视频慕课网APP