EXIF Daten aus RAW-Dateien lesen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von -Franky-.

    EXIF Daten aus RAW-Dateien lesen

    Hallo Leute!

    Mein Programm kann die Exif-Daten aus einer .JPG lesen und zeigt Daten und Foto an. Hier mal der stark vereinfachte Code.

    VB.NET-Quellcode

    1. Dim Foto As System.Drawing.Image = System.Drawing.Image.FromStream(FS)
    2. Dim Exif_Item = Foto.GetPropertyItem(271)
    3. Dim Hersteller = System.Text.Encoding.ASCII.GetString(Exif_Item.Value, 0, Exif_Item.Len - 1)


    Inzwischen lassen sich aber auch die RAW-Dateien der Fotos in der WPF in einem Image-Control anzeigen.
    Das oben erstellte System.Drawing.Image nimmt aber KEINE RAW-Dateien an. Bitmap statt Image führt zum gleichen Ergebnis.
    Dem Image-Control wird ein BitmapImage zugewiesen. Das kann zwar mit den RAW-Dateien umgehen, es kennt aber keine Metadaten, also kein EXIF.
    Der Versuch ein BimapImage in eine Bitmap zuwandeln funktioniert zwar für die Anzeige, aber alle Metadaten gehen dabei verloren.

    Hat jemand eine Idee wie doch noch an die Daten gelangt? Mir fällt nur noch ein die Daten stattdessen aus dem zugehörigen .JPG zu lesen. Das ist zwar einfach, aber irgendwie nicht so schön.

    Gruß

    eddi
    Allein aus diesem Grund würde ich das aus den JPGs holen. Infos zu den Formaten von allen Herstellern zu bekommen, halte ich für ausgeschlossen. Einige Hersteller werden sich auch geschlossen halten. Und hunderte von Cams kaufen um die Daten zu analysieren, wäre zu Zeit- und Kosten-Aufwendig.

    https://de.wikipedia.org/wiki/Rohdatenformat schrieb:


    Da das Format die Rohdaten der Kamera widerspiegelt, ist es von Hersteller zu Hersteller sowie oft auch von Modell zu Modell unterschiedlich, mitunter auch zwischen verschiedenen Versionen eines Kameramodells. Bei den Rohdaten handelt es sich um proprietäre Formate, deren Aufbau teilweise nur dem jeweiligen Hersteller bekannt ist.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „BitBrösel“ ()

    @eichseinet
    Schau dir mal WIC (Windows Imaging Component) an. Sofern entsprechende Codecs, die auch von WIC verwendet werden können, auf dem System vorhanden sind, kannst Du alle möglichen Bildformate lesen, teilweise auch schreiben und kommst auch darüber an entsprechende Metatag-Daten.

    Ich glaub MS stellt einen WIC-Image-CodecPack zur Verfügung und teilweise gibt es auch bei den Kameraherstellern Codecs zum download die auch WIC kompatibel sind.
    Mfg -Franky-
    Hi

    WIC ist schon sehr umfangreich. Ich würde vllt damit anfangen, erst einmal alle WIC-En/Decoder aufzulisten damit Du weist, welche Bildformate Du laden kannst.

    Wenn es nur um bestimmte Metatag-Daten geht, wäre auch was über das COM-Interface IPropertyStore möglich. Die WinRT wäre auch eine Möglichkeit um Bilder zu laden und Metatag-Daten auszulesen. Voraussetzung sind immer vorhandene Codecs.

    Edit: Zum Auflisten der WIC-En/Decoder brauchst Du folgende COM-Interfaces: IWICImagingFactory, IWICBitmapCodecInfo (IWICComponentInfo), IEnumUnknown, IUnknown + ein paar WIC-APIs. Soweit mir bekannt nutzt WPF ebenfalls Teile von WIC.

    Zum Auslesen der Metadaten per WIC: IWICImagingFactory, IWICBitmapDecoder, IWICBitmapFrameDecode, IWICMetadataQueryReader, IEnumString, IUnknown, ISequentialStream und IStream.

    Die WinRT nutzt ebenfalls WIC um Bilder zu laden. Hier kannst die WinRT entweder per COM oder per Verweis auf die Windows.winmd ansprechen. Evtl. reicht Dir ja schon der Windows.Storage.FileProperties Namespace, nutzt im Hintergrund das COM-Interface IProprtyStore, um an entsprechende Metatag-Daten zu kommen. Auch wenn die WinRT hauptsächlich für UWP-Apps gedacht ist, lassen sich große Teile davon auch in WinForms-Apps und Sprachen verwenden, die mit COM umgehen können.

    Edit2: Das sind alle Bildformate die ich über WIC laden könnte: *.bmp;*.dib;*.rle;*.gif;*.ico;*.icon;*.cur;*.jpeg;*.jpe;*.jpg;*.jfif;*.exif;*.png;*.tiff;*.tif;*.dng;*.wdp;*.jxr;*.dds;*.heic;*.heif;*.hif;*.avci;*.heics;*.heifs;*.avcs;*.avif;*.avifs;*.webp;*.3fr;*.ari;*.arw;*.bay;*.cap;*.cr2;*.cr3;*.crw;*.dcs;*.dcr;*.drf;*.eip;*.erf;*.fff;*.iiq;*.k25;*.kdc;*.mef;*.mos;*.mrw;*.nef;*.nrw;*.orf;*.ori;*.pef;*.ptx;*.pxn;*.raf;*.raw;*.rw2;*.rwl;*.sr2;*.srf;*.srw;*.x3f;*.dng;*.arw;*.cr2;*.crw;*.erf;*.kdc;*.mrw;*.nef;*.nrw;*.orf;*.pef;*.raf;*.raw;*.rw2;*.rwl;*.sr2;*.srw;*.dng
    Mfg -Franky-

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „-Franky-“ ()