【问题标题】:How can you crop an SVG Image in Python?如何在 Python 中裁剪 SVG 图像?
【发布时间】:2020-10-30 12:57:16
【问题描述】:

通过一个程序,我正在生成一个尺寸为 400 像素 x 400 像素的 SVG 图像。但是,我想根据一个变量来裁剪此 SVG 图像的底部,该变量指示应裁剪图像底部的多少(以像素为单位)。

这个 SVG 图像是使用 pyCairo 生成的,带有 surface = cairo.SVGSurface("output.svg", WIDTH, HEIGHT)ctx = cairo.Context(surface)

虽然HEIGHT 变量是一个常量并且没有改变,但是在我对surface 对象执行一些操作之后,我希望能够再次调整它的大小。我可以使用 Pillow Image 对象来裁剪 PNG,但它不支持 SVG。

我也尝试使用open("output.svg") 打开 svg 文件。但是,如果我尝试阅读它,我无法阅读它,它会显示为空白,因此无法修改。

在 Python 中是否有任何方法可以裁剪 SVG 图像或在使用 pycairo 修改后修改其大小?

【问题讨论】:

    标签: python svg python-imaging-library pycairo


    【解决方案1】:

    你不能像裁剪 PNG 那样裁剪 SVG,因为在后者中你可以只删除像素,而对于前者你定义了不容易重新计算的路径。

    如果您确定要“裁剪”的部分中没有任何内容,您可以使用set_context_size 使 svg 上下文/画布更小,同时保留内部的比例和大小。

    【讨论】:

    • 在文档中,我找不到任何set_context_size 命令,也不知道如何使用它。能否请您详细说明并举例说明如何使用set_context_size() 命令?
    • 我已经尝试同时运行ctx.set_context_size()surface.set_context_size() 并且都抛出AttributeErrors,因为它们找不到。
    猜你喜欢
    • 2011-08-23
    • 2016-09-10
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 2022-11-23
    相关资源
    最近更新 更多