@AlexBoss

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

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

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

Войти через центр авторизации
Похожие вопросы