Php 将带有过滤器的SVG图像转换为PNG/PDF

Php 将带有过滤器的SVG图像转换为PNG/PDF,php,cakephp,pdf,svg,png,Php,Cakephp,Pdf,Svg,Png,我有以下svg图像到png图像和pdf图像的300 DPI <svg width="640" height="480" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ --> <defs> <filter height

我有以下svg图像到png图像和pdf图像的300 DPI

<svg width="640" height="480" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
 <defs>
  <filter height="200%" width="200%" y="-50%" x="-50%" id="svg_1_blur">
   <feGaussianBlur stdDeviation="10" in="SourceGraphic"/>
  </filter>
 </defs>
 <g>
  <title>Layer 1</title>
  <image filter="url(#svg_1_blur)" xlink:href="images/logo.png" id="svg_1" height="162.999996" width="223.999992" y="99" x="185"/>
  <text xml:space="preserve" text-anchor="middle" font-family="serif" font-size="24" id="svg_2" y="210" x="289" stroke-width="0" stroke="#000000" fill="#000000">sdfdsdsfsdf</text>
 </g>
</svg>

第一层
sdfdsdsfsdf
我想用PHP实现这一点,我已经对图像的模糊过滤器应用了过滤器,我想保留它


我在IE中查看这张图片时也有问题,因为它在IE9上没有显示模糊效果。有什么建议吗?

您可以使用GD制作类似的内容:

但是,对于更复杂的svg,您需要一个

编辑

或者,如果您足够了解:


如果您可以执行脚本(exec、popen等),那么可以使用webkit(与Chrome/Safari相同),并且可以在所有主要平台上使用。您无法比这更接近浏览器将呈现的内容。试着这样做:

exec(“phantomjs rasterize.jshttp://ariya.github.com/svg/tiger.svg 老虎(png)",


别忘了清理(转义路径和文件名或路径中不允许的字符)传递给phantomjs的参数(文件路径)。

是的,我正在考虑使用imagik,但我能控制DPI吗?模糊效果会出现在最终输出中吗?另外,如何使模糊效果在IE中可见?dpi不会影响图像大小。这是一个从屏幕打印转换的因素。e、 g.100x100图片始终是100x100像素的图片,但更改dpi只会影响其像素在页面上的显示大小。IE9不支持svg过滤器,但IE10支持。感谢您提供的信息。。。我不能使用svgweb或其他一些选项来解决此svg过滤器问题吗?我尝试使用Imagemagick,但出现以下错误致命错误:未捕获异常“ImagickException”,消息为“此图像格式无解码委托”`@blob.c/BlobToImage/348”。当我尝试读取svg图像时,此方法仅适用于特定情况要处理的图形是光栅图像(svg并不总是这样),但对于这种情况,它仍然是一个有趣的解决方案。
imagefilter($image_res, IMG_FILTER_GAUSSIAN_BLUR);
imagefilter($image_res, IMG_FILTER_SMOOTH, (int) $levelOfSmoothness);
$gaussian = array(array(1.0, 2.0, 1.0), array(2.0, 4.0, 2.0), array(1.0, 2.0, 1.0));
imageconvolution($image, $gaussian, 16, 0);