|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
04.08.2015, 21:39 | #1 |
Форумчанин
Регистрация: 11.06.2010
Сообщений: 525
|
Неправильно определяется заголовок графического файла (Delphi)
Доброе время суток,
побегав по форумам, я нашел как определяют тип файлов, исходя из содержания самого файла. Например файл «JPEG» сделанный редактором MSPaint, в заголовке содержит (первые 9б): «яШяа..JFIF» Код определяет этот файл Код:
Чтоб использовать вышеприведенный код, мне нужно добавить: Код:
Ну не тут то было. Это не работает, А работает: Код:
Заранее спасибо |
04.08.2015, 22:14 | #2 | |
фонатик DELPHI
Форумчанин
Регистрация: 14.01.2008
Сообщений: 714
|
автор, не по тем форумам бегаешь.
неправильное утверждение. Их нашли задолго до твоего и моего рождения. То , что ты описал называется определение типа файла по сигнатуре вот полный перечень сигнатур и соответствующих им типов файлов http://www.filesignatures.net/index....er=EXT&alpha=J и ещё, я тебе со слезами на глазах прошу не пиши пожалуйста так код на паскале Цитата:
Код:
95% сбоев и ошибок приложений, находится в полу метрах от монитора
Последний раз редактировалось JUDAS; 04.08.2015 в 23:49. |
|
05.08.2015, 02:27 | #3 |
Форумчанин
Регистрация: 11.06.2010
Сообщений: 525
|
Спасибо >>JUDAS
помогло. извиняюсь за безтактность, но мне не понятна следующее: вот мы прочитали 8 байт в переменную "buff": Код:
Код:
2) и почему нужно переставлять регистры, например: "FF D8 FF E8" (на вышеуказанном сайте) в "E8FFD8FF"? Последний раз редактировалось Stilet; 05.08.2015 в 08:28. |
05.08.2015, 07:40 | #4 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,695
|
Цитата:
Цитата:
П.С. У jpeg сигнатура в пару байт, а дальше уже служебная инфа |
||
05.08.2015, 08:36 | #5 | |
фонатик DELPHI
Форумчанин
Регистрация: 14.01.2008
Сообщений: 714
|
Уважаемый p51x, если бы все курили мануалы то существование этого и других форумов было бы излишнее.
п.с. сам не люблю читать. мой метод - "бери и пиши по живому". автор, смотри. Мы читаем 8 байт а анализируем только 4. Чтобы было наглядно и понятно поясню в десятичной системе счисления. допустм, мы закодировали 150 типов файлов числами от 1 до 150. Анализируемые нами типы файлов находятся в первой сотне. В таком случае для анализа мне нужно отбросить вторую сотню if X>99 then X = X - 100 а результат X пропускать case то же и тут. считано 8 байт, а нам нужно анализировать первые 4, поэтому старшие 4 нужно "занулить". Операция and "оставляет" те биты которые указаны во втором операнде, всё остальное онуляется. Пример buff = $0102030405060708 and $FFFFFFFF = ------------------ $0102030405060708 $00000000FFFFFFFF ------------------- $0000000005060708 Как то так.... Цитата:
Сигнатуры в справочниках и на сайте по ссылке выше, указываются в порядке расположения в памяти, то есть наоборот. Если у нас 4 байта, то 1-й байт = 4-му, а 2-й байт 3-му. ВОт и нужно "выворачивать" сигнатуру перед анализом.
95% сбоев и ошибок приложений, находится в полу метрах от монитора
Последний раз редактировалось JUDAS; 05.08.2015 в 08:45. |
|
05.08.2015, 10:53 | #6 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
Цитата:
Цитата:
I'm learning to live...
|
||
05.08.2015, 11:38 | #7 | |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
кстати, Exif/Jfif заголовки могут быть не только в jpeg, и что более интересно являются опциональными во всех случаях (картинка может обойтись и без них).
Цитата:
FF E0, FF E1 .. FF E8 .. FF EE, FF EF - application specific info Последний раз редактировалось f.hump; 05.08.2015 в 11:41. |
|
05.08.2015, 11:43 | #8 | |
фонатик DELPHI
Форумчанин
Регистрация: 14.01.2008
Сообщений: 714
|
Цитата:
http://www.filesignatures.net/index....er=EXT&alpha=J начало jpeg FF D8 FF E* где * - подвид JPEG
95% сбоев и ошибок приложений, находится в полу метрах от монитора
|
|
05.08.2015, 11:51 | #9 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
никого я в заблуждение не ввожу, потому что стандандарт CCITT - T.81 знаю практически на память.
а подвид определяется маркерами FF C0, FF C1, FF C2, FF C3, FF C5, FF C6, FF C7 .. FF CF Последний раз редактировалось f.hump; 05.08.2015 в 11:54. |
05.08.2015, 13:12 | #10 | |
фонатик DELPHI
Форумчанин
Регистрация: 14.01.2008
Сообщений: 714
|
Цитата:
для информации, в сигнатурах рисунка формата JPEG JPG нет ни одного байта который начинается на C7 . Видимо Вы попутали стандарты
95% сбоев и ошибок приложений, находится в полу метрах от монитора
|
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Неправильно определяется ширина окна браузера | AlexKain | JavaScript, Ajax | 8 | 11.06.2016 17:13 |
Неправильно определяется отступ слева | justfor | JavaScript, Ajax | 2 | 25.02.2015 10:37 |
Отображение графического файла в Xlib | Fataller | Общие вопросы C/C++ | 0 | 07.07.2011 16:17 |
вывод графического файла на екран | nikita765 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 06.12.2010 17:39 |
Почему не определяется конец файла? | nazavrik | Общие вопросы C/C++ | 3 | 17.06.2009 20:53 |