@AlexBoss

Как провалидировать что строка base64 является изображением?

Как проще всего провести валидацию строки base64 что она является картинкой(png или jpg).
Нашел вариант через проверку хедера. Хотелось бы что-то более изящное
  • Вопрос задан
  • 183 просмотра
Пригласить эксперта
Ответы на вопрос 2
@PavelMos
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
Ответ написан
Комментировать
seven5674
@seven5674
Старый я уже что бы что-то в себе менять
png и jpg имеют фиксированный формат заголовков
тебе нужно просто найти этот формат и конвертнуть в base64
а потом просто найти вхождение в строке

например для png header такой
0x89 0x50 0x4e 0x47 0x0d 0x0a 0x1a 0x0a
base64 такой
iVBORw0KGg
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы