检查图像文件是否是python中的有效SVG文件

2024-05-15 05:53:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一种方法来确定图像_文件是否是有效的SVG文件

This answer使用imghdr可以很好地用于其他文件类型、PNG等,但对于SVG,它只返回None

除了检查文件扩展名,我是否可以使用其他包或其他方法来确保图像文件是SVG


Tags: 文件方法answersvg图像nonepng图像文件
1条回答
网友
1楼 · 发布于 2024-05-15 05:53:17
import re
from urllib.request import urlopen

SVG_R = r'(?:<\?xml\b[^>]*>[^<]*)?(?:<! .*? >[^<]*)*(?:<svg|<!DOCTYPE svg)\b'
SVG_RE = re.compile(SVG_R, re.DOTALL)

# an example SVG file:
f = urlopen("https://upload.wikimedia.org/wikipedia/commons/1/17/Yin_yang.svg")

file_contents = f.read().decode('latin_1')  # avoid any conversion exception

is_svg = SVG_RE.match(file_contents) is not None

print(['NOT SVG', 'SVG'][is_svg])  # prints SVG

可能的优化是仅读取和/或解码前N个字节。确定N的问题在于<svg<!DOCTYPE svg之前可能有非常长的注释

该正则表达式已在我的Mac上使用32120个SVG文件进行了验证

相关问题 更多 >

    热门问题