Как можно обрезать изображение SVG в Python? - PullRequest
0 голосов
/ 09 июля 2020

С помощью программы я создаю изображение SVG с размерами 400 x 400 пикселей. Однако я хотел бы обрезать нижнюю часть этого изображения SVG на основе переменной, которая определяет, какая часть нижней части изображения должна быть обрезана в пикселях.

Это изображение SVG создается с помощью pyCairo с surface = cairo.SVGSurface("output.svg", WIDTH, HEIGHT) и ctx = cairo.Context(surface).

Хотя переменная HEIGHT является константой и не изменяется, после выполнения некоторых операций с объектом surface я хотел бы иметь возможность изменять размер это еще раз. Я могу использовать объект Pillow Image для обрезки PNG, но он не поддерживает SVG.

Я также пытался открыть файл svg с помощью open("output.svg"). Однако, если я попытаюсь прочитать его, я не смогу, и он отображается как пустой, что делает его немодифицируемым.

Есть ли в Python способ обрезать изображение SVG или изменить его размер после он был изменен с помощью pycairo?

1 Ответ

0 голосов
/ 09 июля 2020

Вы не можете обрезать SVG, как PNG, потому что в последнем вы можете просто отбрасывать пиксели, в то время как для первого вы определили пути, которые не так легко пересчитать.

Если вы уверены, что ничего нет в той части, которую вы собираетесь «обрезать», вы можете использовать set_context_size, чтобы уменьшить контекст / холст svg, сохраняя при этом соотношение и размер внутри.

...