Как проверить, является ли файл допустимым файлом изображения?

Swift 4.1.

Это зависит от того, чего вы хотите достичь. Для этого же вопроса я использовал ...

let message = "Happy"
for v in message.utf8 {
    print(v)
}

Затем я выполнил необходимые операции над отдельным байтом. Вывод:

//72
//97
//112
//112
//121

https://developer.apple.com/documentation/swift/string.utf8view

89
задан mhaghighat 24 January 2018 в 02:08
поделиться

7 ответов

Часто первая пара символов будет магическим числом для различных форматов файлов. Вы можете проверить это в дополнение к проверке исключений выше.

10
ответ дан 24 November 2019 в 07:11
поделиться

В Linux вы можете использовать python-magic ( http://pypi.python.org/pypi/python-magic/0.1 ), который использует libmagic для идентификации файла. форматы.

AFAIK, libmagic изучает файл и пытается рассказать вам больше, чем просто формат, например размеры растрового изображения, версию формата и т. д. Так что вы можете рассматривать это как поверхностный тест на «достоверность».

Для других определений «действительного» вам, возможно, придется написать свои собственные тесты.

3
ответ дан 24 November 2019 в 07:11
поделиться

В дополнение к тому, что предлагает Брайан, вы можете использовать метод PIL verify , чтобы проверить, не поврежден ли файл.

im.verify ()

Попытки определить, является ли файл сломан, без фактического декодирования данные изображения. Если этот метод найдет проблемы, это вызывает подходящие исключения. Этот метод работает только на вновь открытое изображение; если изображение имеет уже загружен, результат неопределенный. Также, если вам нужно загрузить изображение после использования этого метода, вы необходимо повторно открыть файл изображения. Атрибуты

45
ответ дан 24 November 2019 в 07:11
поделиться

Вы можете использовать привязки Python к libmagic, python-magic , а затем проверить типы mime. Он не скажет вам, повреждены ли файлы или нет, но он сможет определить, какой это тип изображения.

3
ответ дан 24 November 2019 в 07:11
поделиться

Ну, я не знаю, как устроен psd, но я, конечно, знаю, что, по сути, svg не является файлом изображения как таковым, - он основан на в xml, так что это, по сути, простой текстовый файл.

2
ответ дан 24 November 2019 в 07:11
поделиться

Будет ли приемлемой проверка расширений файлов или вы пытаетесь подтвердить, что сами данные представляют собой файл изображения?

Если вы можете проверить расширение файла, регулярное выражение или простое сравнение могут удовлетворить требование.

1
ответ дан 24 November 2019 в 07:11
поделиться

Я только что нашел встроенный модуль imghdr . Из документации python:

Модуль imghdr определяет тип изображения, содержащегося в файле или байте stream.

Вот как это работает:

>>> import imghdr
>>> imghdr.what('/tmp/bass')
'gif'

Использование модуля намного лучше, чем повторная реализация аналогичных функций

175
ответ дан 24 November 2019 в 07:11
поделиться
Другие вопросы по тегам:

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