Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Гродненский Форум
18 Июль 2025, 09:43:38
Новости, реклама:
   Главная   Новости Гродно Помощь Игры Календарь Войти Регистрация   Меню
Гродненский Форум > Компьютеры > Программирование
(Модераторы: Админ, barmalei) > Тема:

Работа с jpeg на Pascal

Страниц  :   Вниз
  Печать  
Автор Тема: Работа с jpeg на Pascal  (Прочитано 2322 раз)
0 Пользователей и 1 Гость смотрят эту тему.
_Lelik
Молодой Гродненец
*

Репутация: +0/-0
Offline Offline

Пол: Женский
Сообщений: 14


Просмотр профиля Email
« : 19 Март 2007, 13:04:16 »

Есть файл с расширением *.jpg. Надо проссмотреть содержимое файла в Pascal побитно. Как лучше организовать алгоритм?
Записан
VooDoo
Почетный гродненец
*****

Репутация: +89/-1
Offline Offline

Пол: Мужской
Сообщений: 2885


Dum spiro spero

Просмотр профиля WWW Email
« Ответ #1 : 19 Март 2007, 13:15:10 »

побитно?
хм ну тогда читаешь побайтно и каждый байт переводишь в двоичную систему
Записан

Are you human? - My body is.
Do you feel pain? - My body does.
..- --- --- -.. --- ---
_Lelik
Молодой Гродненец
*

Репутация: +0/-0
Offline Offline

Пол: Женский
Сообщений: 14


Просмотр профиля Email
« Ответ #2 : 19 Март 2007, 14:22:23 »

Ну.. с этим вроде не так сложно.
А как определить незадействованные биты после метки FF DA для введения цифровой подписи?  :-?
Записан
VooDoo
Почетный гродненец
*****

Репутация: +89/-1
Offline Offline

Пол: Мужской
Сообщений: 2885


Dum spiro spero

Просмотр профиля WWW Email
« Ответ #3 : 19 Март 2007, 14:36:05 »

если честно, то не особо силён насчёт того что там творится внутрях jpg.
если объяснишь что такое "незадействованные биты после метки FF DA для введения цифровой подписи", ну или хотя бы линк скинешь на доку (самому лень по гуглу шастать), то потом придумаем как сделать  Подмигивающий
Записан

Are you human? - My body is.
Do you feel pain? - My body does.
..- --- --- -.. --- ---
_Lelik
Молодой Гродненец
*

Репутация: +0/-0
Offline Offline

Пол: Женский
Сообщений: 14


Просмотр профиля Email
« Ответ #4 : 20 Март 2007, 14:42:02 »

Для начала я любую картинку (пока я работаю с черно-белой с градациями серого) сохраняю с расширением jpg. Используя, например, TotalCommander я проссматриваю ее содержимое в 16-ричном виде. Теперь о метках: первая FF D8 - означает начало изображения. FF E0 - специфические данные . и т.д. FF C4 - определяет таблицы Хаффмана (их может быть от 1 до 4). FF DA - непосредственно само изображение. FF D9 - конец изображения. Изменять содержимое jpg файла можно между FF DA и FF D9, причем после FF DA нужно еще отступить 12 байт.

Теперь о незадействованных битах.
Пусть файл будет таким:
1 1 0 1 0
1 1 1 0 1
1 0 1 1 0
1 1 0 1 1
0 1 1 0 1
0 1 1 1 .
1 1 1 1 .
1 1 0 1 . и.т.д.

Есть стандартный "словарик":
00
010
011
100
101
110
111

Сравниваем исходный файл со "словарем" (по столбцам, я для удобства так записала). Максимум- три бита. "111" совпадает со "словарем" -переписываем
1
1
1

"100" - тоже, переписываем
Получается теперь так:
1
1
1
1
0
0

Теперь остается два бита свободными, т.е. "11" переходит грубо говоря в следующий столбец (т.е. происходит смещение двух бит).
Если так проанализировать и далее, то получается:
1 1 1 1 1 0
1 1 1 0 0 1
1 1 1 1 1 0
1 1 1 1 1 .
0 0 0 1 0 .
0 1 1 0 1 .
х х х х х .
х х х х х .
где х- "незадействованные" или свободные биты. В них то и можно потом ввести цифровую подпись.
Записан
VooDoo
Почетный гродненец
*****

Репутация: +89/-1
Offline Offline

Пол: Мужской
Сообщений: 2885


Dum spiro spero

Просмотр профиля WWW Email
« Ответ #5 : 20 Март 2007, 15:39:51 »

Вообщем, моё понимание всего:

1)эээ стандартный словарь я так понимаю это просто запимсь от 0 до 7 в двоичном виде. ели так то первые две строчки надо
   000
   001

2)т.е. как я понимаю весь алгоритм сводится к смещению
   что бы получилось число строк значящих битов кратное трём, остальное это свободные.
   Т.е. если это всё перевести в линейный вид, то у тебя в этом примере после каждого  6-го бита есть два свободных.

3) тебе сначало надо считать всё между FF DA и FF D9 и с этим работать :-/ ну в смысле, то, что ты приводила в примере это кусок между
FF DA и FF D9


или я что-то не понимаю...
Записан

Are you human? - My body is.
Do you feel pain? - My body does.
..- --- --- -.. --- ---
_Lelik
Молодой Гродненец
*

Репутация: +0/-0
Offline Offline

Пол: Женский
Сообщений: 14


Просмотр профиля Email
« Ответ #6 : 20 Март 2007, 16:38:52 »

Ты понимаешь все правильно, только свободных может быть не обязательно два бита, это просто в этом примере так получилось. Может быть либо один, либо два бита. Три нет.
Записан
VooDoo
Почетный гродненец
*****

Репутация: +89/-1
Offline Offline

Пол: Мужской
Сообщений: 2885


Dum spiro spero

Просмотр профиля WWW Email
« Ответ #7 : 20 Март 2007, 17:13:35 »

Хм...
приведи пример когда останется один бит.

ты файл записываешь в таблицу по байтам(ну в смысле что у тебя 8 строк) и по твоему алгоритму если сравнивать со словарём
000
001
010
011
100
101
110
111
то у тебя всегда получется 2 в остатке
Записан

Are you human? - My body is.
Do you feel pain? - My body does.
..- --- --- -.. --- ---
Страниц  :   Вверх
  Печать  
 
Перейти в:  

Войти
Войдите, чтобы добавить комментарий

Войдите через социальную сеть

Имя пользователя:
Пароль:
Продолжительность сессии (в минутах):
Запомнить:
Забыли пароль?

Контакт
Powered by MySQL Powered by PHP Мобильная версия
Powered by SMF 1.1.20
SMF © 2006-2025, Simple Machines
Simple Audio Video Embedder
| Sitemap
Valid XHTML 1.0! Valid CSS!
Страница сгенерирована за 0,09 секунд. Запросов: 20.