Dateiinformationen aus Jpg Datei auslesen



  • Hallo Forum,

    ich möchte einige Dateiinformationen einer Jpeg Bilddatei auslesen, wie z.B. den Autor, die Auflösung und das Datum der letzten Änderung.

    Zum Auslesen der letzten Änderung benutze ich die

    stat("Datei.jpg",&statref)
    

    Funktion aus "sys/stat.h" .
    Das funktioniert auch wunderbar, aber hiermit komme ich nicht an die Auflösung ran und auch nur an die EigentümmerID..

    Sind diese "Sonderattribute" betriebssystemspezifisch (und nur in meinem Windows vorhanden) oder hängen die in irgendwelchen Metadaten des Bildes und wenn ja wie kann man daran kommen?

    Falls jemand eine Idee hat bitte posten 😃 bin für jeden Vorschlag dankbar.

    Schöne Grüße

    Fred


  • Administrator

    Was verstehst du unter Autor? Der Ersteller des Files? Dann ist das Betriebsystem spezifisch, hat also nichts mit Standard C++ zu tun.

    Die Auflösung wird im JPEG gespeichert, da muss du dessen binäre Datenstruktur auslesen. Informationen dazu findest du hier:
    http://www.wotsit.org/list.asp?al=J

    Datum der letzten Änderung ist wieder Betriebsystem spezifisch, wieder nix mit Standard C++ zu tun.

    "sys/stat.h" ist soweit ich weiss ein Unix C Header. Also unter Windows nicht zu empfehlen.
    Auf Windows würde ich zur WinAPI raten, bzw. zu den "File Management Functions":
    http://msdn.microsoft.com/en-us/library/aa364232(VS.85).aspx

    Interessant für dich dürften vor allem diese zwei sein:
    http://msdn.microsoft.com/en-us/library/aa364944(VS.85).aspx
    http://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx

    Falls du Platformunabhängig bleiben möchtest, dann gibt es etwas von Boost. Wobei für einen Anfänger dies ziemlich mühsam sein könnte, da man schon ein wenig gefestigt in C++ sein sollte.
    http://www.boost.org/doc/libs/1_38_0/libs/filesystem/doc/index.htm

    Über Unix/Linux/Mac habe ich keine Ahnung, da müsstest du in den enstprechenden Bereich nachfragen gehen oder einen Mod darum bitten, dich entsprechende zu verschieben.

    Grüssli



  • Hallo Dravere,

    erstmal danke für die schnelle Antwort.

    Ja mit Autor meinte ich Ersteller der Datei. Das ganze müsste Plattformunabhängig bleiben deswegen kann ich mich leider nicht nur auf WindowsAPIs stürzen..

    Bis du dir bei der stat.h ganz sicher? Ich meine mal gelesen zu haben, dass es
    für Windows/MS-Dos sys\stats.h und für unix/Linux System sys/stats.h gibt..

    Naja werde ich jetzt erstmal in die Datenstruktur von Jpegs einlesen.

    Danke für die Links

    Grüße

    Fred


  • Administrator

    FreddieR schrieb:

    Bis du dir bei der stat.h ganz sicher? Ich meine mal gelesen zu haben, dass es
    für Windows/MS-Dos sys\stats.h und für unix/Linux System sys/stats.h gibt..

    Also wenn schon, ist der Backslash oder Slash egal. Auf Unix wird ein / verwendet, auf Windows ist / und \ erlaubt. Das ist insofern irrelevant.

    Es gibt auf Windows ein "sys/stat.h", welches auch für Dateiinformationen zuständig ist:
    http://msdn.microsoft.com/en-us/library/14h5k7ff.aspx

    Grundsätzlich wird da aber die _stat Funktion verwendet. Mit einem Makro lässt sich dies allerdings glaub ich auch als stat verwenden. Persönlich würde ich aber davon eher abraten. Wenn du wirklich Platformunabhängig sein willst, dann hol dir eine entsprechend vorgefertigte Bibliothek und da kann man Boost.Filesystem wirklich nur wärmstens empfehlen.

    Grüssli


Anmelden zum Antworten