django 如何在python中获取SVG图像的分辨率?

2w3rbyxf  于 12个月前  发布在  Go
关注(0)|答案(2)|浏览(149)

有没有办法在python中获得SVG图像的分辨率。所有其他图像分辨率都可以用PIL正常工作。我没有得到任何SVG图像的解决方案。我使用以下代码来获得分辨率,但它只适用于某些情况,

data = request.FILES['picture']
tree = ET.parse(data)
root = tree.getroot()
h = int(root.attrib['height'])
w = int(root.attrib['width'])
print(h, w)

字符串

qjp7pelc

qjp7pelc1#

SVG文件是向量,可以作为XML读取。例如,Python标准库中的xml.etree.ElementTree可以解析XML文件。
我们有这样的东西:

<svg width="240" height="240" xmlns="http://www.w3.org/2000/svg">

字符串
如果你的文件有宽度和高度属性,你可以使用它们。没有宽度和高度,我不认为有一种方法来获得SVG文件的确切大小,因为它们可以无限缩放(任何分辨率
宽度和高度

<svg width="240" height="240" 
xmlns="http://www.w3.org/2000/svg">


是原来的两倍。

<svg viewBox="0 0 120 120" width="240" height="240" 
xmlns="http://www.w3.org/2000/svg">


无限标度

<svg viewBox="0 0 120 120" 
xmlns="http://www.w3.org/2000/svg">

a14dhokn

a14dhokn2#

这是这个问题的另一种解决办法。

import requests
from io import BytesIO
from svgpathtools import svg2paths

# URL of the SVG file
svg_url_example = 'https://upload.wikimedia.org/wikipedia/commons/f/f7/Bananas.svg'

# Fetch the SVG content from the URL
response = requests.get(svg_url_example)

# Check if the request was successful
if response.status_code == 200:

    # Read the content of the SVG file
    svg_content = BytesIO(response.content)

    # Extract paths and attributes
    #paths, attributes = svg2paths(svg_content)
    attributes = svg2paths(svg_content, return_svg_attributes = True)

    print(f"SVG Width: {attributes[2]['width']}")
    print(f"SVG Height: {attributes[2]['height']}")
else:
    print("Failed to fetch the SVG file.")

字符串

相关问题