我正在使用以下脚本来生成SVG的扩展PNG版本。使用PHP将SVG转换为PNG
<img src="barrington.svg" width="418" height="188"/> //comparison
<?php
$im = new Imagick();
$im->setBackgroundColor(new ImagickPixel('transparent'));
$svg = file_get_contents("barrington.svg");
$im->setresolution(144,144);
$im->readImageBlob($svg);
$im->setImageFormat("png32");
echo '<img src="data:image/png32;base64,' . base64_encode($im) . '" />'
?>
当显示/比较相同尺寸的SVG版本时,PNG在图像的某些部分有锯齿状边缘。
(见的形象在这里:http://i.stack.imgur.com/WGKIH.png)
我使用ImageMagick的(如果不是已经明显),并想解决这个问题。
编辑: 为了澄清,为我的目的,我需要一个PNG,而不是一个SVG。这不是修复浏览器兼容性问题。
既然你要输出到浏览器,为什么你需要转换为PNG?浏览器应该完全正确地显示SVG,除了老版本的IE,它不管怎样都不会喜欢base64的'src ='data:...''格式。 – Spudley 2012-07-20 21:27:40
这个脚本更多的是一个概念证明类型的东西。我最终的目标是创建一个基于用户偏好显示栅格化SVG的表单,并且可以下载。 – Steve 2012-07-20 21:36:30
您是否能够在此获得解决方法。我有同样的问题?另外,我正在丢失一些svg文件的细节,同时转换为JPEG或PNG。 – noobcode 2012-12-31 07:14:10