svg - <image> 导致图像像素化

标签 svg

我想创建一个包含重复元素的 SVG。因此,我创建了要多次使用的图像的 SVG,并使用 <image> 包含它。标签( described here )。让我们将此多用途图像称为“M”,并使用 <image> 来调用 SVG 文件。标记“S”。

问题: 没有 SVG 查看器对图像 M 进行抗锯齿处理。

例如,如果我使用 ImageMagick 将最终的 SVG 转换为我使用的 PNG

convert -antialias -density 2000 file.svg -quality 100 file.png

然而,图像 M 并未以 2000 DPI 渲染且完全像素化,而在 S 中直接创建的形状看起来很完美。

例如在 S.svg 中:

<image xlink:href="M.svg" /> <!-- This looks pixelated -->
<path d="M 0 0 50 50" stroke="black" /> <!-- This looks crisp -->

如何使程序(任何程序)以更高的 DPI 渲染图像 M?

最佳答案

根据包含的图像(是否在其他地方使用?),您也可以使用 <defs> 将其包含在主 SVG 中。和 <use> .

这使您可以在 SVG 中定义组,并在整个 SVG 中多次使用这些组。看起来非常适合这里。

一个例子是这样的:

<svg viewBox = "0 0 1000 1000" version = "1.1">
    <defs>
      <g id="myGroup">
        <circle cx = "200" cy = "200" r = "200" fill = "yellow" stroke = "black" stroke-width = "3"/>
        <!-- your included image's content basically in here -->
      </g>
    </defs>

    <use x = "100" y = "100" xlink:href = "#myGroup"/>
    <use x = "100" y = "650" xlink:href = "#myGroup"/>
</svg>

关于svg - <image> 导致图像像素化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16685014/

相关文章:

javascript - 加载后将 'onclick' 事件附加到 SVG 元素 'rect'

python - Django 开发服务器可以正确地为 SVG 服务吗?

javascript - 将 Textpath svg 发布到 png

javascript - 使用 CSS 样式化 SVG 图像

svg - d3.js 的问题 - 缩放路径形状

java - 使用 XSLFO 显示 SVG

javascript - 有没有办法 *getRotationAngleAtLength(in float distance)* 类似于 getPointAtLength(in float distance)

google-chrome - svg foreignObject 元素上的单击事件 layerX 的值不正确

javascript - 在 Fabricjs v1.5 中克隆 svgs 组时,svgs 的颜色更改为黑色

css - 如何以跨浏览器一致的方式使用 svg 模式?