检查图像文件是否是python中的有效SVG文件
我正在寻找一种方法来确定图像_文件是否是有效的SVG文件 使用检查图像文件是否是python中的有效SVG文件,python,image,svg,Python,Image,Svg,我正在寻找一种方法来确定图像_文件是否是有效的SVG文件 使用imghdr可以很好地用于其他文件类型、PNG等,但对于SVG,它只返回None 除了检查文件扩展名,我是否可以使用其他包或其他方法来确保图像文件是SVG?import re import re from urllib.request import urlopen SVG_R = r'(?:<\?xml\b[^>]*>[^<]*)?(?:<!--.*?-->[^<]*)*(?:<svg
imghdr
可以很好地用于其他文件类型、PNG等,但对于SVG,它只返回None
除了检查文件扩展名,我是否可以使用其他包或其他方法来确保图像文件是SVG?import re
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
从urllib.request导入urlopen
SVG_R=R'(?:]*>[^有趣的是,regex只是检查并查看文件的内容是否为有效的svg格式?好吧,它检查文件的开头是否为有效的svg格式。但这也是imghdr
所做的……在一篇针对浏览器环境中解决同一问题的评论中,有人向我指出,测试XMLprolog可能是一个限制性太强的要求。@ccprog我不太理解你的评论,但谢谢你的链接,它告诉我我可以删除不区分大小写。我的意思是,特别是浏览器将呈现独立的SVG文件,即使XML prolog丢失并且文件以根
元素开头。其他呈现RER可能会抱怨,也可能不会。有效性可能是一个取决于您的用例的概念。将其加载到xml解析器中,使用解析器检查根元素是否为svg,是否在svg名称空间中如果我的答案对您有所帮助,您介意“接受”吗它?我可以用这些积分来实现个人目标。如果你需要进一步调整,以使其对你有用,当然,我仍然可以继续努力。