https://docs.python.org/3/library/imghdr.html
работает с файлами и с объектами
но пишут что он тоже проверяет только заголовок файла . Но просмотрщики графики всё равно будут пытаться отобразить частично даже поврежденный файл, значит, само понятие, как валидный JPEG, не совсем корректно. Может быть, нужен полностью валидный, который откроется до конца ?
def what(file, h=None):
f = None
try:
if h is None:
if isinstance(file, basestring):
f = open(file, 'rb')
h = f.read(32)
else:
location = file.tell()
h = file.read(32)
file.seek(location)
for tf in tests:
res = tf(h, f)
if res:
return res
finally:
if f: f.close()
return None