粗糙的边缘用PHP将SVG转换为PNG

时间:2012-07-20 21:17:06

标签: php svg imagemagick png edges

我正在使用以下脚本生成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。这不是修复浏览器兼容性的问题。

1 个答案:

答案 0 :(得分:1)

通常在setImageResolution和setResolution上存在混淆。因此,您可能希望尝试使用setImageResolution和setResolution,并查看边缘问题是否已得到纠正。根据我的理解,setResolution对于密度是正确的,但您仍想设置图像大小。加144可能不够高密度。

如果没有,则始终可以调整图像大小。使图像大2倍,然后调整大小。