Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Exif informace - výpis v C/C++

Priklad (original jpeg z fotaku):
FF D8 - Start Of Image, nema to ziadnu dlzku citam hned dalsi chunk
FF E1 - jpeg chunk APP1, hned prvy chunk mam exif informacie (keby nie tak preskocim dlzku chunku)
1B 49 - dlzka chunku (tolko bytov -2 by som preskocil keby to nebol APP1 chunk, teraz to len ignorujem)
49 45 78 69 - "Exif", otestujem preistotu ci to je "Exif", alebo ignorujem
00 00 - to tu bude vzdy a ignorujem to
TU JE TERAZ EXIF OFFSET 0 takze bud si vynulujem pocitadlo a ked budem citat nejake bajty tak si budem zvysovat aj pocitadlo aby som vedel kde v subore sa nachadzam a kolko bajtov preskocit na nejaky offset, alebo ak nie tak bude treba pouzivat funkcie na absolutny posun po subore a zapamatat si aktualny offset v subore, v mojom pripade je to offset 12decimalne. Takze napr. exif offset 100 bude u mna v subore absolutny offset 112.
49 49 - "II" takze mam intel endian (vsetky viacbajtove hodnoty sa citaju zprava)
2A 00 - hodnota 002A tu ma byt, a aj je. otestujem alebo ignorujem. (pozn. v motorola endiane tu budu byty 00 2A a nie 2A 00! a aj vsetky dalsie hodnoty budu pre "II" bajtovo zprava a pre "MM" by boli normalne)
08 00 00 00 - nulte IFD zacina na offsete 00000008, t.j. preskocim 8-8 = 0 bytov (pretoze od offsetu 0 som uz precital 8 bytov tak nepreskakujem nic)
0C 00 - bude nasledovat 000C (12decimalne) tagov
0E 01 - tag 010E ma nezaujima, preskocim aj dalsich 2+4+4 bajtov (typ,dlzku dat,offset dat)
0F 01 - tag 010F ma nezaujima, preskocim aj dalsich 2+4+4 bajtov (typ,dlzku dat,offset dat)
.. atd dokopy toto urobim celkovo 12x lebo tolko tu ma byt tagov, a testujem ci som nasiel tag 0132 (bajty 32 01 lebo mam intel endian) alebo 9003 (bajty 03 90 lebo mam intel endian).
a nasiel som:
32 01 - tag Date and Time
02 00 - typ 0002 (asi ascii, viz exif specifikaciu)
14 00 00 00 - dlzka dat = 00000014 hex = 20decimalne
18 01 00 00 - data su na EXIF offsete 00000118 hex, t.j. v mojom subore je to +12decimal lebo viz vyssie a to je 00000124hex. No a ked si pozrem offset 124 hex tak tam mam 20 ASCII bajtov datum a cas suboru.
Keby som pokracoval aj na EXIF IFD tabulku (tag EXIF IFD Offset) alebo aj na next IFD offset po tych 12-tich tagoch, tak by som nasiel aj tag 9003 (bajty 03 90) a tam je zas offset na iny string s datumom a casom. V niektorom subore mozu byt tie tagy obe, v niektorom moze byt len jeden z nich, zavisi od fotaku.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny