C ++: проверьте, является ли файл bmp легальным - PullRequest
2 голосов
/ 28 июля 2010

Я использую C ++ (Visual Studio) и хочу проверить, является ли файл .bmp законным (не переименованный в virus.exe), прежде чем пользователь сможет поделиться им через Интернет с другими пользователями, использующими мое приложение. Я использую DirectX 2d рендеринга и повышения фреймворка.

Есть ли (простой?) Способ проверки растровых изображений?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 28 июля 2010

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

2 голосов
/ 28 июля 2010

Вы можете попробовать загрузить растровое изображение с помощью Win32 LoadImage, что должно привести к сбою для искаженных растровых изображений.

Как уже упоминалось, вы можете проверить заголовок растрового изображения и проверить его работоспособность, например размер файла (на основечто вы найдете в шапке).Это было бы быстрее, чем LoadImage, но много кода для написания и тестирования.Существует много законных вариантов заголовка растрового изображения.

Предположительно, LoadImage хорошо протестирован, поскольку он существует вечно.

0 голосов
/ 28 июля 2010

Проверьте эту библиотеку: http://easybmp.sourceforge.net/

Вы можете использовать эту функцию:

bool ReadFromFile(char* FileName). 

Она вернет false, если данный файл не является допустимым файлом BMP.К сожалению, это приведет к загрузке всего файла в память, и вам нужно только проверить заголовок.Вы можете проверить заголовок вручную или найти API, который сделает это за вас.

Надеюсь, это поможет.

edit: Проверьте и эту ссылку: http://www.gamedev.net/reference/articles/article1966.asp

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