• Herzlich willkommen im "neuen" DSLR-Forum!

    Wir hoffen, dass Euch das neue Design und die neuen Features gefallen und Ihr Euch schnell zurechtfindet.
    Wir werden wohl alle etwas Zeit brauchen, um uns in die neue Umgebung einzuleben. Auch für uns ist das alles neu.

    Euer DSLR-Forum-Team

  • In eigener Sache!

    Liebe Mitglieder, liebe Besucher und Gäste
    ich weiß, es ist ein leidiges Thema, aber ich muss es ansprechen: Werbung, Werbeblocker und Finanzierung des Forums.
    Bitte hier weiterlesen ...

  • DSLR-Forum Fotowettbewerb neu erfunden!
    Nach wochenlanger intensiver Arbeit an der Erneuerung des Formates unseres internen Fotowettbewerbes ist es Frosty als Moderator
    und au lait als Programmierer gelungen, unseren Wettbewerb auf ein völlig neues Level zu heben!
    Lest hier alle Infos zum DSLR-Forum Fotowettbewerb 2.0
    Einen voll funktionsfähigen Demowettbewerb kannst du dir hier ansehen.
  • Neuer Partner: AkkuShop.de
    Akkus, Ladegeräte und mehr (nicht nur) für Digitalkameras und Drohnen
  • Neuer Gutscheincode unseres Partners Schutzfolien24:
    DSLR-Forum2024
    Dauerhaft 10% Rabatt auf alle Displayschutzfolien der Eigenmarken "Upscreen", "Brotec", "Savvies".
    Der Code ist für alle Geräteklassen gültig.
  • Stimmt ab über die Sieger des DSLR-Forum Fotowettbewerbs Juni 2024.
    Thema: "Wiederholung"

    Nur noch bis zum 30.06.2024 23:59!
    Jeder darf abstimmen!
    Zur Abstimmung und Bewertung hier lang
WERBUNG

hex-Aufbau der jpg-Bilder (EOS 400D), besonders Exif-Teil

rm2

Themenersteller
Hallo an alle,

wer kennt den hex-Aufbau der jpg-Bilder (EOS 400D), besonders Exif-Teil?

Ich habe zwar die 85 Seiten (https://www.dslr-forum.de/showthread.php?t=839705) gelesen (Ergebnis: bin jetzt mehr verunsichert, +1000 ist für mich unerreicht, fühle mich vorab schon ausgeschlossen) ebenso die Suchfunktion benutzt (brachte keinen Treffer bei jpg + aufbau; jpg + exif), stelle die Frage trotzdem jetzt.


Wenn man sich einen Hex-dump ansieht, findet man Klartext:

0x0004: Exif
0x0086: Canon
0x008c: Canon EOS 400D DIGITAL
0x00bd: Datum + Uhrzeit
0x010a: 0221
0x019b: 0100
0x0236: Datum + Uhrzeit
0x024b: Datum + Uhrzeit
0x04a8: Canon EOS 400D DIGITAL
0x04c8: Firmware 1.0.5
0x04e8: unknown
0x09c2: H1343310
0x169d: R98
0x16a8: 0100

es gibt es noch:
0x000c: 49 49 2a 00 08 00
0x1582: 49 49 2a 00 72 02


Dann gibt es Bilder, die ab 0x80 einen anderen Aufbau haben.

Hintergrund meiner Frage: Originaldateien werden bei mir archiviert, ich möchte aber gen die Einstellungen je Bild später noch erkennen können.

mfg ralph
 
Schau Dir mal folgende Seiten an, da EXIF soweit normiert ist, sollte es sich doch wohl nicht soo sehr unterscheiden. ok, bei jpg hast Du JFIF als Datei-Aufbau und kann sich sehr wohl unterscheiden.

(vorsicht. ich hab den anderen Thread nicht gelesen ;))

Ach ja, vielleicht hast Du auch noch IPTC-Metadaten drin, die sollten natürlich auch betrachtet/beachtet werden..

http://www.exif.org/specifications.html
http://www.jpeg.org/public/jfif.pdf
http://de.wikipedia.org/wiki/IPTC-NAA-Standard

php-Beispiele, um die Datensätze beispielhaft auszuwerfen.

EXIF - http://bueltge.de/exif-daten-mit-php-aus-bildern-auslesen/486/
JFIF - http://phpxref.com/xref/phpjmt/JFIF.php.html
IPTC - http://www.meshed.de/2008/iptc-daten-mit-php/

mfg chmee
 
Hallo MasterFX und chmee,

danke für die links.
In http://www.exiv2.org/tags-canon.html steht:

0x0007 7 Canon Exif.Canon.FirmwareVersion Ascii Firmware version


In http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html steht:

0x0007 CanonFirmwareVersion string


Es sieht nach Index-Übersichten aus.

Wenn ich meine 400D-Bilder ansehe steht Firmware entweder ab 0x14fc oder
0x04c8 (Firmware als ASCII String gibt es nur 1x in jeder jpg-Datei).

Frage: warum diese Unterschiede und macht das nur meine 400D?



zum Beitrag von AlBundy,

wenn Du mir die Bedeutung der ersten 256 Byte der 400D-jpg-Datei
erklären könntest, bin ich am Ziel.




mfg ralph
PS wenn ich den hex-Aufbau kenne, kann ich mit einem kleinem C-Programm mir eine Tabelle mit den Kameraeinstellungen erstellen. Das hilft mir, wenn einige Aufnahmen nicht so sind, wie ich es will, dies später zu korrigieren.
 
Mir scheint ein wenig, Du versuchst das Rad neu zu erfinden. Ich glaube, Du solltest Dir exiftool bzw. libexif und die dazugehörigen Quelltexte näher anschauen. Die sollten das Gewünschte ohne größeren Aufwand leisten können. Detaillierte Spezifikationen zum EXIF-Format gibt's auf http://exif.org/specifications.html.

- Die EXIF-Daten haben keine feste Position (Offset) innerhalb der JPG-Datei! Das JFIF-Format ist ähnlich wie z.B. TIFF in "Chunks"/Segmente unterteilt, deren Länge und Position variieren kann.
- EXIF-Informationen bestehen im Wesentlichen aus paarweise zugeordneten "Tag"/"Value"-Werten. Auch diese können in Länge und Anordnung variieren, und sind nur zum Teil standardisiert/genormt. Speziell die herstellerspezifischen Angaben ("MakerNotes") können je nach Hersteller und sogar von Kamera zu Kamera erhebliche Unterschiede aufweisen.

Gruß, Graukater
 
... wenn ich den hex-Aufbau kenne, kann ich mit einem kleinem C-Programm mir eine Tabelle mit den Kameraeinstellungen erstellen...

Von grundauf, alles selber zu "decodieren" und infos in Erfahrung zu bringen,
mag ungeheuer Spass bereiten und ist sicher eine Herausforderung.

Wenn es "nur" um jpeg geht (unabhängig vom Gehäuse) bietet sich an,
GDI+ Bibliotheken mal anzuschauen und die Beispielcodes dazu.

Ebenfalls ein Kandidat, die "shotgraph.dll", auch da, in mehreren Sprachen Beispielcodes auffindbar.
So wird der "Zugang" zu den gesuchten Informationen erheblich leichter.

Mit der shotgraph.dll lassen sich ca. 150 "Exif Tags" auslesen, teilw. schreiben.

Einmal mehr, der Hinweis zum exiftool, das vermutlich umfangreichste und mächtigste Werkzeug
zum Lesen/Schreiben/Analsysieren/vieles mehr rund um die "exif". nahezu Datenformat unabhängig.

Auch sowas, lässt sich gut und einfach per code fernsteuern.

Zu den 3 genannten Möglichkeiten, gibt es wie erwähnt, Anleitungen und es werden schnell Ergebnisse erzielt.

lg sf
 
Ich habe zwar die 85 Seiten (https://www.dslr-forum.de/showthread.php?t=839705) gelesen (Ergebnis: bin jetzt mehr verunsichert

Was hat der Sammelthread für Verbesserungsvorschläge mit diesem Thema zu tun?

Ich habe Dein Vorhaben nicht genau verstanden; viele Bildbearbeitungsprogramme und Tools können die Metadaten anzeigen.
Da Du die Originaldateien archivierst, sollte es doch keine Probleme geben.

die Bedeutung der ersten 256 Byte der 400D-jpg-Datei
erklären könntest, bin ich am Ziel.

Ich habe eine 400D-JPEG-Datei (anderes Land, deswegen Rebel XTi) rausgesucht und einige Daten aufgeschrieben. Vielleicht hilft es Dir ja weiter. Ein Blick in die JPEG, EXIF- und TIFF-Spezifikationen bleibt Dir trotzdem nicht erspart, wenn Du selbst ein Tool schreiben willst.
Ich würde aber an Deiner Stelle lieber ExifTool o.ä. verwenden (oder zumindest eine fertige Library).

*******************

--- JPEG-Start
ffd8: SOI (Start of image) - blau
ffe1: APP1-Marker - blau
366e: Länge des Datenblocks - blau
457069660000: "Exif\0\0" (EXIF-Header) - blau
--- Daten im TIFF-Format
49492a00: TIFF-Header - orange
08000000: Offset von IFD0 - orange
--- IFD0
0900: Anzahl der IFD-Einträge (9 Felder, 1 Feld = 12 Bytes) - orange
- Tag 1
0f01: Tag 0x010F/271 (Make)
0200: Datentyp (ASCII)
06000000: Datenlänge (6 Werte)
7a000000: Daten (Offset, da >4 Bytes), dez. 122 - rot
Offset dez. 134 (dez. 122 vom Start des TIFF Headers aus): "Canon\0" - Start = rot
- Tag 2
1001: Tag 0x0110/272 (Model)
0200: Datentyp (ASCII)
1c000000: Datenlänge (28 Werte)
80000000: Daten (Offset, da >4 Bytes), dez. 128 - grün
Offset dez. 140 (dez. 128 vom Start des TIFF Headers aus): "Canon EOS DIGITAL REBEL XTi\0" - Start = grün
...
- Tag 9
6987: Tag 0x8769/34665 (EXIF-Offset)
0400: Datentyp (LONG)
01000000: Datenlänge (1 Wert)
c4000000: Offset des EXIF-Blocks (dez. 196, relativ zum Start des TIFF-Headers)

-
9 Tag-Felder x 12 Bytes = 108 Bytes
Offset dez. 130 = Erste Daten nach den 9 EXIF-Feldern; dies ist das Ende von IFD0.
Am Ende eines IFD steht der Offset des nächsten IFD (oder 00000000, falls kein weiterer IFD-Block vorhanden ist), hier also der von IFD1:
b4160000 (dez. 5812, relativ zum Start des TIFF-Headers)
--- IFD1 (nicht mehr im Bild)
0600: Anzahl der IFD-Einträge
- Tag 1
0301: Tag 0x0103/259 (Compression)
0300: Datentyp (SHORT)
...
- Tag 2
...
usw.

--- EXIF-Block (siehe oben Tag 9 in IFD0)
1c00: Anzahl der EXIF-Tags (28 Felder, 1 Feld = 12 Bytes)
- Tag 1
9a82: EXIF-Tag 0x829a/33434 (ExposureTime)
0500: Datentyp (RATIONAL)
01000000: Datenlänge (1 Wert, Offset, da >4 Bytes)
1a010000: Offset dez. 538, relativ zum TIFF-Header; siehe unten.
...
- Tag 28
...
------

Bei Offset 538 relativ zum TIFF-Header: 0100000040010000
RATIONAL = 2 x LONG, Zähler und Nenner
Zähler = 01000000 (dez. 1)
Nenner = 40010000 (dez. 320)
Beim Tag ExposureTime bedeutet es also 1/320s

*******************

Ohne Gewähr, ich habe es nur mal runtergeschrieben; es sind vermutlich Fehler drin.
Es gibt noch weitere Offsets zu "Tag-Blöcken" außer 0x8769/34665 (EXIF-Offset), z.B. GPS-Daten und vor allem Makernotes (da wird es allerdings etwas haarig, da Du nach Hersteller und - spätestens innerhalb der Makernote - nach Modell unterscheiden musst). XMP- und IPTC-Daten, welche jeweils (wie auch einige Daten, auf die innerhalb der Makernotes verwiesen wird) nicht dem Schema der EXIF/TIFF-Tags entsprechen, spielen hier ja keine Rolle, da die Bilddateien der 400D so etwas nicht enthalten.
 
Zuletzt bearbeitet:
Hallo an alle,

Graukater schrieb:
Mir scheint ein wenig, Du versuchst das Rad neu zu erfinden

Ich hatte mir es mit den jpgs einfacher vorgestellt (ich habe das schon mit exportierten AutoCAD Dateien gemacht, aber ohne dll :rolleyes:).

Ich habe nach exif gesucht und einen Eintrag mit Links zu kostenlosen Programmen gefunden. Jetzt benutze ich Exif-Viewer 2.50D.
Das reicht mir erstmal um herauszufinden was bei Aufnahen nicht so lief, wie ich es wollte.



Schattenfotograf schrieb:
Was hat der Sammelthread für Verbesserungsvorschläge mit diesem Thema zu tun?

Auf den 85 Seiten wird sich auch darüber geäußert, wenn Fragen wiederholt gestellt werden, die schon beantwortet sind, sollten Restriktionen folgen
(meist von Nutzern mit +2000 Einträgen).
Manchmal liefert die Suchfunktion aber nichts, wenn man beim 2. mal im da im Datum "und älter" eingibt kommt was. Es kann also durchaus sein, dass eine Frage wiederholt im Forum gestellt wird (wir wollen ja noch was lernen).

Dank an alle für die Hilfe :)

mfg ralph
 
@TO ... wenn du gerne selbst was (in C) kodieren willst, dann lade die aus dem Web die Quellen von "jhead" ... ist recht leicht zu finden ... da ist ein Exif-Parser drin, wenn du dir zudem noch aus der Exif-Beschreibung die Datentypen und die Wertecodierung anschaust (insb. die APEX Werte), dann solltest du schnell auf die Fuesse kommen.
 
WERBUNG
Zurück
Oben Unten