我正在使用以下脚本生成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在某些图像周围具有锯齿状边缘。
(请参见此处的图片:https://i.stack.imgur.com/WGKIH.png)
我正在使用ImageMagick(如果它还不明显的话),并希望解决这个问题。
编辑:为了澄清,出于我的目的,我需要一个PNG,而不是SVG。这不是修复浏览器兼容性之类的问题。
通常在setImageResolution和setResolution上存在混淆。因此,您可能需要尝试setImageResolution和setResolution,看看您的边缘问题是否得到了纠正。根据我的理解,setResolution对于密度是正确的,但您仍然希望设置图像大小。加144的密度可能不够高。
如果没有,那么调整图像大小始终是可能的。将图像放大2倍,然后调整大小。