相关疑难解决方法(0)

在 python 中,将 SVG 转换为 PNG,同时调整大小并提高质量

首先,我注意到有很多相关的问题,但是在尝试了 pyvip 和 cairo 以及其余的一天之后,即使在安装了它们似乎依赖的其他软件之后,它们都对我不起作用。例外是 svglib 和 reportlab,它很接近,但还没有完全达到目标!是我发现的最好的帖子,可能会对一些人有所帮助。

我的所有源图像都保存在 SVG 文件中。大多数应用商店要求您提供一组具有特定尺寸和质量的 PNG。所以我需要获取一个 SVG 并生成一个宽度为 w、高度为 h 以及特定 dpi 的 PNG。我想在 python 中以编程方式执行此操作。

我编写了一个几乎可以工作的函数,但是缩放和 dpi 以奇怪的方式相互作用。我使用 svglib 将 SVG 转换为 ReportLab 绘图,然后使用 reportlab 操作该绘图。与其他一些选项不同,Windows 上的安装过程很顺利。

pip install svglib
pip install reportlab
Run Code Online (Sandbox Code Playgroud)

代码如下。我检查了上面的库来获取参数,但添加了一些东西来获取特定的大小。

from svglib.svglib import svg2rlg
from reportlab.graphics import renderPM

def svg_to_png(in_path,out_path,fmt="PNG",
    scale=None,size=None,scale_x=1,size_x=None,scale_y=1,size_y=None,
    dpi=72, bg=0xffffff):
    # Convert SVG to ReportLab drawing. 
    drawing = svg2rlg(in_path)
    # Work out scale factors
    # Scale over-rides scale_x|y, ditto size
    scale_x = scale if …
Run Code Online (Sandbox Code Playgroud)

python svg reportlab

5
推荐指数
1
解决办法
3565
查看次数

标签 统计

python ×1

reportlab ×1

svg ×1