Autor Beitrag
Kvn
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 29.05.09 22:18 
Hallo,

ich hoffe ihr könnt mir helfen.
Ich schreibe gerade einen sehr simplen Exif-Reader. Er soll bloss 6 Werte auslesen.
Habe mich im Internet etwa 2stunden abgequält um dafür ne Lösung zu finden, da hab ich dann die ASCII-Werte der einzelnen Eigenschaften gefunden. Nur will nun bei 4 von 6 Eigenschaften nichts gescheites bei raus kommen.

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
Bitmap MyPhoto = new Bitmap(openFileDialog1.FileName);
PropertyItem[] props = MyPhoto.PropertyItems;
Encoding ascii = Encoding.ASCII;

//CamModel
const int IDCamModel = 272;
PropertyItem Make = MyPhoto.GetPropertyItem(IDCamModel);
string kameramodell_inhalt = ascii.GetString(Make.Value, 0, Make.Len - 1);
kameramodell.Text = kameramodell_inhalt;

//Date
const int IDDate = 36867;
PropertyItem Make2 = MyPhoto.GetPropertyItem(IDDate);
string datum_inhalt = ascii.GetString(Make2.Value, 0, Make2.Len - 1);
datum.Text = datum_inhalt;

//Belichtungszeit
const int IDBelichtung = 33434;
PropertyItem Make3 = MyPhoto.GetPropertyItem(IDBelichtung);
string belichtung_inhalt = ascii.GetString(Make3.Value, 0, Make3.Len - 1);
belichtungszeit.Text = belichtung_inhalt;

//Blende
const int IDBlende = 33437;
PropertyItem Make4 = MyPhoto.GetPropertyItem(IDBlende);
string blende_inhalt = ascii.GetString(Make4.Value, 0, Make4.Len - 1);
blende.Text = blende_inhalt;

//ISO
const int IDISO = 34855;
PropertyItem Make5 = MyPhoto.GetPropertyItem(IDISO);
string iso_inhalt = ascii.GetString(Make5.Value, 0, Make5.Len - 1);
iso.Text = iso_inhalt;

//Brennweite
const int IDBrennweite = 37386;
PropertyItem Make6 = MyPhoto.GetPropertyItem(IDBrennweite);
string brennweite_inhalt = ascii.GetString(Make6.Value, 0, Make6.Len - 1);
brennweite.Text = brennweite_inhalt;


Die ersten beiden Angaben funktionieren noch. danach nicht mehr. ein Screenshot zur Verdeutlichung im Anhang. Hoffe ihr könnt mir helfen.


Moderiert von user profile iconKha: Topic aus C# - Die Sprache verschoben am Fr 29.05.2009 um 22:54
Einloggen, um Attachments anzusehen!
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 29.05.09 22:54 
:welcome:

Schau dir mal PropertyItem.Type an: Nicht jede Eigenschaft ist als ASCII gespeichert. Beim Umwandeln dürfte dir der System.BitConverter helfen.

_________________
>λ=
Kvn Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 29.05.09 23:31 
Hi,

ich taste mich grad erst an C# ran und das ist mein erstes "Projekt". hab mir vorhin bei msdn mal die erklärung vom BitConverter angesehn. Hab das in etwa verstanden was der macht, nur weiss ich noch nicht, wie das bei meinem Problem nützlich sein könnte.

Könntest du das noch nen wenig näher erläutern?
Danke :zustimm:
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 30.05.09 13:14 
user profile iconKvn hat folgendes geschrieben Zum zitierten Posting springen:
ich taste mich grad erst an C# ran und das ist mein erstes "Projekt".
Uh, dann könnte es schon sein, dass du dich damit ein wenig übernimmst.

Nehmen wir mal an, Type sei 4:
PropertyItem.Type hat folgendes geschrieben:
4
Specifies that Value is an array of unsigned long (32-bit) integers.

Es können also mehrere UInt32 drinstecken, aber im Normalfall wird es wohl genau einer sein. Value sollte also 4 Byte groß sein und den UInt32 bekommst du nun mit BitConverter.ToUInt32 daraus.

Sollte dir diese Erklärung nicht soo viel sagen, solltest du dir vielleicht doch erstmal ein einfacheres Projekt vornehmen und nicht gleich auf Byte-Ebene anfangen ;) .

_________________
>λ=