【问题标题】:How to convert SVG to PNG while keeping aspect ratio but changing extents?如何在保持纵横比但改变范围的同时将SVG转换为PNG?
【发布时间】:2016-05-02 02:14:54
【问题描述】:

我正在尝试将 SVG 转换为 PNG。 SVG 是一个非正方形的矩形。我希望图像的纵横比保持不变,因此需要填充图像的范围(透明)。

我在 OS X Mavericks,10.9.2。

我已经用 3 个工具尝试过这个,每个工具都有问题:

使用 ImageMagick:

convert -background none -resize 200x200 -gravity center -extent 200x200 rect.svg rect-imagemagick.png 

开始 --

结束 --

图像是正方形,纵横比正确,但模糊。我看到其他用户报告了 imagemagick 将 SVG 转换为 PNG 的问题。我已升级 imagemagick 以使用 rsvg(通过 brew),如以下版本的代表所示。

版本:

# convert --version
Version: ImageMagick 6.9.1-3 Q16 x86_64 2016-01-23 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2015 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: DPC Modules
Delegates (built-in): bzlib cairo fontconfig freetype jng jpeg ltdl lzma png rsvg tiff xml zlib

使用 rsvg:

rsvg-convert -a -w 200 -h 200 rect.svg > rect-rsvg.png

开始 --

结束 --

图像清晰,纵横比正确,但我看不出有什么方法可以使它变成正方形(扩展图像)。

版本:

# rsvg-convert --version
rsvg-convert version 2.40.9

使用 Inkscape:

inkscape -z -e rect-inkscape.png -w 200 -h 200 rect.svg

开始 --

结束 --

图像方正且清晰,但纵横比不正确。

版本:

# inkscape --version
W: AppleCollationOrder setting not found, using AppleLocale.
Setting LANGSTR from AppleLocale: en
Overriding empty LANG from /usr/share/locale/locale.alias
Setting Language: en_US.UTF-8
Inkscape 0.48.5 r10040 (Jul 12 2014)

【问题讨论】:

  • 感谢分享这个 rsvg-convert 解决方案,让我很开心

标签: image svg imagemagick png


【解决方案1】:

好的,我意识到如果我将两个实用程序结合起来,答案很简单:

rsvg-convert -a -w 200 -h 200 rect.svg > rect-rsvg.png
convert -background none -resize 200x200 -gravity center -extent 200x200 rect-rsvg.png rect-correct.png

首先使用rsvg-convert 转换为PNG,它可以正确转换但不会扩展。然后用 imagemagick 从 PNG 扩展到 PNG。

【讨论】:

    猜你喜欢
    • 2021-11-26
    • 2015-09-04
    • 2019-04-03
    • 1970-01-01
    • 2018-04-29
    • 2014-12-11
    • 1970-01-01
    • 2019-05-12
    • 2020-12-07
    相关资源
    最近更新 更多