the*_*ozh 5 python svg bounding-box
我想提取 SVG 绘图的边界框。
由于 Python 已经在系统上可用并且还用于执行其他任务,因此我不想使用 JavaScript 或任何其他语言。我的理解是是否可以计算单个元素的边界框(但我不知道如何计算)。
整个绘图的边界框只是所有元素的最小和最大x,y值a,因此可能需要计算所有元素的边界框。
我是一个Python初学者,但svgwrite可能不是正确的模块,到目前为止我对rsvg在Windows系统上安装感到害怕。
小智 1
可能有更直接的方法来实现此目的,但类似的方法应该可以满足您的要求。
您可以使用该方法将文件转换为路径对象列表svg2paths并迭代它们。
from svgpathtools import svg2paths
def get_bbox(svg_file):
paths, _ = svg2paths(svg_file)
for i, path in enumerate(paths):
if i == 0:
# Initialise the overall min-max with the first path
xmin, xmax, ymin, ymax = path.bbox()
else:
# Expand bounds to match path bounds if needed
p_xmin, p_xmax, p_ymin, p_ymax = path.bbox()
xmin = p_xmin if p_xmin < xmin else xmin
xmax = p_xmax if p_xmax > xmax else xmax
ymin = p_ymin if p_ymin < ymin else ymin
ymax = p_ymax if p_ymax > ymax else ymax
print(xmin, xmax, ymin, ymax)
get_bbox("myfile.svg")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3081 次 |
| 最近记录: |