• Neuer Gutscheincode unseres Partners Schutzfolien24:
    DSLR-Forum2025
    Dauerhaft 10% Rabatt auf alle Displayschutzfolien und Schutzgläser der Eigenmarken
    "Upscreen", "Screenleaf", BROTECT" und "Savvies".
    Der Code ist für alle Geräteklassen gültig.
  • Mitmachen beim DSLR-Forum Fotowettbewerb Mai 2025.
    Thema: "Grün"

    Jeden Monat attraktive Gewinnprämien, gesponsert von unserem Partner PixelfotoExpress.
    Alle Infos zum Mai-Wettbewerb hier!
  • 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 ...

  • Nicht erreichbare Adressen im Benutzerkonto
    Wir bekommen zurzeit eine große Anzahl an E-Mails, die das System zum Beispiel als Benachrichtigungen an Nutzer verschickt,
    als unzustellbar zurück, weil z.B. die Adressen nicht erreichbar sind oder das Postfach gar nicht existiert.
    Stellt doch bitte sicher, dass die Benachrichtigungen, die ihr vom System erwartet, auch zugestellt werden können.
    Nicht erreichbare E-Mail-Adressen sind dazu wenig hilfreich.
    Danke!
  • Unlauterer Verkäufer wieder unterwegs!

    Liebe Mitglieder,
    Florian Franzek, der seit Jahren mit verschiedensten Usernamen in allen möglichen Foren und auf etlichen Verkaufsplattformen auftritt,
    ist wieder hier im Forum und versucht, ehrliche Käufer zu betrügen.
    Wir können wenig tun, außer bei Bekanntwerden einer weiteren Registrierung eines Accounts für seine Machenschaften, diese umgehend zu sperren.
    Ich empfehle, bei Kontakt umgehend die Polizei einzuschalten.

WERBUNG

Suche Code um EXIF Daten auszulesen

barnie1989

Themenersteller
Hallo Leute!

Ich suche etwas VB Code um die EXIF Daten von meinen Bildern auszulesen und in eine mySQL DB einzulesen. Im Moment kann ich nur Datum, Modell und Hersteller auslesen. Die anderen Daten gehen mir leider verloren.

Danke RUDI
 
Zuletzt bearbeitet:
Hallo,

also es gibt wohl die Möglichkeit die Exif daten direkt über einen Bytestream zu bekommen, und die nötigen Adressen einfach auslesen. Ein bisschen eleganter geht es mit ASPJpeg, ist eine schöne Bibliothek, die zum einen alles auslesen kann, zum anderen aber noch eine menge andere Sachen macht. Zu finden unter http://www.aspjpeg.com
 
libexif sollte dir da weiterhelfen, alternativ gibts auch noch libexiv oder so ähnlich, keine Ahnung wodurch die sich konkret unterscheiden. ufraw für Gimp nutzt die, daher kenne ich sie. Keine Ahnung wie kompliziert die API ist, sollte aber nicht so schlimm sein denke ich.

Falls es Geld kosten darf, PN und ich les dir die Dinger schon irgendwie aus ;)
 
Lade dir den ExifReader von hier

Mit dem Kommadozeilenparameter "exifread.exe -csv meinbild.jpg", mit dem Shell-Befehl unsichtbar und mit wait starten, erzeugte CSV-Datei auswerten, in die Datenbank importieren und feddich is'.

Wenn du dir ein wenig Mühe gibst, legst du noch eine Parsertabelle an und übersetzt die Tags gleich noch ins Deutsche.

Ich habe ein Programm geschrieben, da nutze ich den Reader schon seit vielen Jahren und das klappt wunderbar.
 
Für VB kenne ich bisher nur ExifReader. Für Deine Anwendung dürfte es auch nicht so schlimm sein, daß sie jedesmal das komplette JPG einliest.

Alle anderen Libs, die hier bisher vorgeschlagen wurden, sind nur in C/C++ verfügbar und Du musst Dir einen passenden Wrapper drumherum schreiben. Oder sie kosten, wie AspJpeg, richtig Geld, obwohl man die ganzen Sachen als C++ Libs auch als OpenSource bekommt. Dann doch lieber für EXIF/IPTC-Daten exiv2 verwenden und selber wrappen, was man davon braucht.

Eine Alternative wäre noch per GDI+ an die Daten zu gelangen.

Gruß Bernhard
 
Argl. Sorry, ich hab ungenau gelesen und/oder das "VB" weggefiltert.

Für VB nützen dir die von mir genannten C/C++-Libraries eher wenig, sorry.

ImageMagick liefert mit "identify" auch die EXIF-Daten, falls du System-Kommandos ausführen kannst aus deinem VB-Programm heraus...

i.e.

$result=system('/path/to/identify --verbose imagename.jpg');

Und dann muss man das Ergebnis halt auseinander nehmen.
 
Ich habe mir einen Code von www.planetsourcecode.com (nach EXIF suchen) gezogen, da ist eine Klasse mit bei, die du ganz einfach in dein Projekt einbauen kannst.

Die Klasse ist von:
Chavdar Jordanov
EXIF Meta Tag reader
http://www.ba.wakwak.com/~tsuruzoh/Computer/Digicams/exif-e.html

Ich habe selbst ein Proggie geschrieben um alle Bilder eines Verzeichisses (samt Unterverzeichnisse) in deine Access Datenbank zu lesen. Daraus soll eine Fotodatenbank-software werden, wo man nachher die Bilder bewerten kann und so seine Fehler analysieren und bei den nächsten Aufnahmen verbessern kann.

Die Klasse liest alle Daten des EXIF aus (so ca. 30-40)

Das was mir jetzt noch fehlen tut ist eine Klasse, die ein Histogramm erzeugen kann. Falls also jemand da ne idee hat so postet diese.


MFG
Baby Joe
 
ClipFix schrieb:
Lade dir den ExifReader von hier

Mit dem Kommadozeilenparameter "exifread.exe -csv meinbild.jpg", mit dem Shell-Befehl unsichtbar und mit wait starten, erzeugte CSV-Datei auswerten, in die Datenbank importieren und feddich is'.

Wenn du dir ein wenig Mühe gibst, legst du noch eine Parsertabelle an und übersetzt die Tags gleich noch ins Deutsche.

Ich habe ein Programm geschrieben, da nutze ich den Reader schon seit vielen Jahren und das klappt wunderbar.

Das klappte absolut super! Danke für den guten Tipp!

RUDI
 
baby-joe schrieb:
Ich habe selbst ein Proggie geschrieben um alle Bilder eines Verzeichisses (samt Unterverzeichnisse) in deine Access Datenbank zu lesen.

So schön wie es ist, ich kann trotzdem immer nur empfehlen, nicht die Bilder in die Datenbank zu schreiben, sondern nur den jeweils relativen Pfad bzw. den Dateinamen, einmal kann Accees gerademal 1 GB ab und zum anderen, sofern du die Originale löschen solltest nachdem sie in der Datenbank abgelegt wurden, hast du im Notfall keine Chance eine Wiederherstellung der Bilder vorzunehmen, wenn die Datenbank so richtig crasht.

Last but not least, warum die Originalbilder in der Datenbank speichern, sie liegen doch schon in einer Datenbank, in einer sehr effizienten und die nennt sich "das Dateisystem des Betriebssystems" :D

Das einzige was ich immer mache, ich erstelle Thumbnails aus den Originalbildern und die speichere ich in der Datenbank. Ich habe so im Endeffekt die Thumbnails recht schnell parat um sie in irgendeiner Thumbnailiste einzublenden ohne die Originale immer wieder resamplen zu müssen, vermeide dabei aber auch doppelte Dateiverwaltung. Sollte die Datenbank dann einmal unwiderbringlich zerstört sein, erstelle ich halt die Thumbnails neu.



barnie1989 schrieb:
Das klappte absolut super! Danke für den guten Tipp!

Keine Ursache, erschien mir als die schnellste und einfachste Lösung, da ich mich mit derartigen Sachen schon länger beschäftige und je nach Kamerahersteller schon mal fast am Verzweifeln war.
 
Ich speicher nichtmal die Thumbnails in der DB. Die mySQL DB dient nur zum Verwalten der Ordnerstukturen, der Kategorien und der Beschriftungstexte und EXIF Daten. Die Bilder und die Thumbs liegen normal im Filesystem. Immer 1000 zusammen in einem Verzeichnis. Nach dem Import werden die Bilder umbenannt. #DB-ID#originalbildname so finde ich die Bilder auch ohne DB, wenn ich die ID habe :) Ein Bild kann logisch in mehreren Alben stecken und liegt nur einmal auf der Platte. Inzwischen sind >25000 Bilder drin und es ist noch super schnell!

RUDI
 
ClipFix schrieb:
So schön wie es ist, ich kann trotzdem immer nur empfehlen, nicht die Bilder in die Datenbank zu schreiben, sondern nur den jeweils relativen Pfad bzw. den Dateinamen, einmal kann Accees gerademal 1 GB ab und zum anderen, sofern du die Originale löschen solltest nachdem sie in der Datenbank abgelegt wurden, hast du im Notfall keine Chance eine Wiederherstellung der Bilder vorzunehmen, wenn die Datenbank so richtig crasht.

Last but not least, warum die Originalbilder in der Datenbank speichern, sie liegen doch schon in einer Datenbank, in einer sehr effizienten und die nennt sich "das Dateisystem des Betriebssystems" :D

Das einzige was ich immer mache, ich erstelle Thumbnails aus den Originalbildern und die speichere ich in der Datenbank. Ich habe so im Endeffekt die Thumbnails recht schnell parat um sie in irgendeiner Thumbnailiste einzublenden ohne die Originale immer wieder resamplen zu müssen, vermeide dabei aber auch doppelte Dateiverwaltung. Sollte die Datenbank dann einmal unwiderbringlich zerstört sein, erstelle ich halt die Thumbnails neu.

Ist schon klar! Ich arbeite als Datenbankentwickler und kenne die Probleme!:wall: Warum denk eigentlich immer jeder, das andere keine Ahnung haben?

Es geht bei meiner Software nur um die Datenbank für EXIF, Bewertung, Thematik ...

MFG
Baby Joe
 
baby-joe schrieb:
Ist schon klar! Ich arbeite als Datenbankentwickler und kenne die Probleme!:wall: Warum denk eigentlich immer jeder, das andere keine Ahnung haben?

Es geht bei meiner Software nur um die Datenbank für EXIF, Bewertung, Thematik ...

MFG
Baby Joe

Ich finde die Annahme hier gar nicht so verfehlt, immerhin ist es ein Fotografie-Forum und keines wo es um c0d3 geht. Gell :)

Da würde ich als default auch annehmen, dass das Gegenüber zumindest möglicherweise nicht so viel Erfahrung hat...

Lieber ein Tipp zuviel als einer zuwenig.
 
baby-joe schrieb:
Warum denk eigentlich immer jeder, das andere keine Ahnung haben?

Sorry, die Vermutung lag nahe, denn ...

... um alle Bilder eines Verzeichisses (samt Unterverzeichnisse) in deine Access Datenbank zu lesen.

dann schreib' doch gleich ...

Es geht bei meiner Software nur um die Datenbank für EXIF, Bewertung, Thematik ...

Es ist i.d.R. immer das Informationsdefizit, das dieses Gefühl "man hat mich schon wieder auf den Schlips getreten" hervorruft. Wenn du immer dieses Gefühl hast dann solltest du aufhören, die Schuld bei anderen zu suchen. Heul nicht rum, kläre Missverständnisse in der Form der Diskussion, das ist leichter für alle.

barnie1989 schrieb:
Ich speicher nichtmal die Thumbnails in der DB.

Klar, ist eine Alterative, es gibt immer zwei Möglichkeiten und hatte ich auch schon, irgendwann beim Stand ab 100.000 Bildern, nervte dann einfach diese doppelten Dateien, also Orginal und Thumbnail.

Es war u.a. auch ein Kundenwunsch, der Explosionszeichnungen auf DVDs gespeichert hat. In diesem Fall hat sich die Variante, die Datenbank mit den gespeicherten Thumbnails temporär auf der Festplatte zu speichern und sie dann anzuzeigen, als die Schnellste herausgestellt. Unabhängig davon wird dann noch eine Daten-Datenbank verwendet.
 
gibt es das nur objekt orientiert ?

suche einen Exifreader als C code ohne ++

möchte eigendlich nur TIF von TIF(F) unterscheiden
die TIF aus meiner 1D haben Bildgrößen um 288 pixel (thumbnail) und unterscheiden sich somit von erzeugten TIF(F) um etwa 1000-2000 Pixel

ich muss mir ein Aufräum Proggi schreiben

Problem, früher nur JPG gemacht ! keine RAW dazu vorhanden
1.) also suche aus den JPG Exif die passenden RAW(TIF) Dateien und ignoriere echte TIF(F) und wenn vorhanden , verschiebe in Unterordner RAW, wenn nicht vorhanden anlegen.

dann irgendwann mit nur RAW angefangen, größtes Problem, muss erst mal aus RAW Vorschau JPG erzeugen
2.) wenn kein JPG zum RAW vorhanden JPG erzeugen (optimal schon in maximal 600er Höhe)

nun mache ich RAW + kl. JPG , aber das JPG ist viel zu groß 12xx x 8xx um 300 KB , könnte mit IRFAN View im Batch locker auf 900 x 600 bei kompress. 75 auf 50-100 KB komprimiert werden

später Step 2 möchte ich nur noch in den Vorschau Bildern selektieren, wenn ich das JPG lösche , soll ein Proggi hinterher auch das zugehörige RAW(TIF) löschen

hat noch jemand Ideen oder Tipps ?
 
LGW schrieb:
libexif sieht mir eigentlich wenig Objektorientiert aus...

hab halt runtergeladen und immer nur cs als Endung gesehen so richtig blicke ich durch den Code auch nicht durch...

ich meine der Header müsste ähnlich wie ein WAVE Header sein, ein grosses Bytearray dies in ein Struct laden um an die Dateiinfos zu kommen , wie hier:

struct wave
{
char main_chunk[4]; // `RIFF`
DWORD g_length; // Gesamtl?nge der Datei
char chunk_type[4]; // `WAVE`
char sub_chunk[4]; // `fmt `
DWORD sub_length; // L?nge sub_chunk, immer = 16 Byte
WORD format; // momentan immer = 1 fr PCM Code
WORD modus; // = 1 fr mono, = 2 fr stereo
DWORD sample_fq; // Sample-Frequenz
DWORD byte_p_sec; // Datendurchsatz pro Sekunde
WORD byte_p_spl; // Bytes per Sample; = 1 fr 8-bit, = 2 fr 16-bit
WORD bit_p_spl; // Bit per Sample; 8, 12 oder 16
}my_wav_hd;

struct sub_chunk //sub_chunk.char data_chunk[0]
{
char data_chunk[4]; // Kennung fr Data-Bereich; = `data`
DWORD data_length; // L?nge des Data-Blocks
}my_sub_chunk;

char puffer[1024];
fread( puffer, 1000, 1, dateiein );
fclose(dateiein);

memcpy(&my_wav_hd,puffer,36);
memcpy(&my_sub_chunk,puffer+36+my_wav_hd.sub_length-16 ,8);

und so kann man dann zugreifen...

printf("my_wav_hd.sub_length : %ld \n",my_wav_hd.sub_length);
printf("my_wav_hd.format [PCM = 1] : %d \n",my_wav_hd.format);
printf("Modus=1 mono, 2 stereo : %d \n", my_wav_hd.modus);
printf("my_wav_hd.sample_fq : %ld \n",my_wav_hd.sample_fq);

ich weiss während der wave header ehewr statisch ist, kann der jpg header dynamisch sein, aber irgenwie muss man doch da ähnlich zugreifen können..

also irgendwo müssen die Pointer auf var zeigen, als byte, word , dword oder char[]
 
jar schrieb:
gibt es das nur objekt orientiert ?

suche einen Exifreader als C code ohne ++

möchte eigendlich nur TIF von TIF(F) unterscheiden
die TIF aus meiner 1D haben Bildgrößen um 288 pixel (thumbnail) und unterscheiden sich somit von erzeugten TIF(F) um etwa 1000-2000 Pixel
[...]
hat noch jemand Ideen oder Tipps ?

http://www.remotesensing.org/libtiff/

Code:
#include "tiffio.h"
main(int argc, char* argv[])
{
    TIFF* tif = TIFFOpen(argv[1], "r");
    if (tif) {
        printf("%s is a TIFF.\n", argv[1]);
        TIFFClose(tif);
        }
    else {
        printf("%s is anything else.\n", argv[1]);
        }
    exit(0);
}

Für (struct) Header, siehe dort.
Hoffegeholfenzuhaben. ;)
 
Hallo

Ich arbeite ebenfalls an einer Fotodatenbank in VB. Ich brauche nur das aufnahmedatum, sonst nichts. wie kann ich das aus dem exifreader auslesen?

nebenbei:

ich erstelle für meine DB Thumbnails, damit die Fotos schneller angezeigt werden können, aber es geht niemals so schnell wie beim exif reader. Weiß jemand wie der so schnell eine Miniaturansicht generiert? das Thumbnailerstellen ist nämlich auch zeitaufwendig


Danke

mfg Matthias
 
WERBUNG
Zurück
Oben Unten