Seite 2 von 2
Re: Modul pyexif2 Problem
Verfasst: Mittwoch 25. Januar 2012, 17:59
von BlackJack
@Hein_nieH: Die elegante Lösung wäre wohl die richtige Kodierung zu verwenden:
Code: Alles auswählen
In [11]: u'Hällö'.encode('utf16')[2:]
Out[11]: 'H\x00\xc3\x00\xa4\x00l\x00l\x00\xc3\x00\xb6\x00'
Re: Modul pyexif2 Problem
Verfasst: Mittwoch 25. Januar 2012, 18:10
von Hein_nieH
Hallo BlackJack,
habe ich proiert funzt aber nicht.
Wie muesste denn er Code deiner Meinung nach geändert werden?
Wie bereits gesagt, ich bin nur durch experimentieren darauf gekommen.
Gruss Hein_nieh
Re: Modul pyexif2 Problem
Verfasst: Mittwoch 25. Januar 2012, 18:14
von Hyperion
Hein_nieH hat geschrieben:
habe ich proiert funzt aber nicht.
Zeig uns doch mal Deinen Versuch - und präzisiere, was "funzt nicht" bedeutet

(Ok, in diesem Kontext nehme ich mal an, dass es wie früher einfach keine Änderung gubt - aber so etwas solltest Du *immer* explizit schreiben)
Re: Modul pyexif2 Problem
Verfasst: Mittwoch 25. Januar 2012, 18:23
von Hein_nieH
Code: Alles auswählen
y=y.encode('utf16')[2:]
metadata['Exif.Image.XPComment'].value=y
Statt y=y.replace(' ',' 0 ') habe ich es mit y=y.encode('utf16')[2:]
versucht.
In der jpg-Datei sieht man dann nur ein einzelnes Zeichen.
Verewendet man die replace-Methode, so ist der übergebene String in der jpg-Datei vollständig sichtbar.
Ich vermute jedoch, dass das Modul pyexiv2 insichtlich dieser Tags noch eine Macke hat, siehe auch den Kommentar von /me.
Gruss hein_nieH
Re: Modul pyexif2 Problem
Verfasst: Mittwoch 25. Januar 2012, 18:26
von Hyperion
Du rufst `encode` auf dem falschen Objekt auf - sofern Deine Bezeichner mit obigen Code übereinstimmen¹. Du musst das mit dem `x`-Objekt aufrufen - der Typ von `y` ist doch irgend etwas "verqueres" - oder was sagt Dir `type(y)` ohne das `encode`?
¹`x` und `y` sind eher schlechte Namen in diesem Kontext! Die sagen nichts aus...
Re: Modul pyexif2 Problem
Verfasst: Mittwoch 25. Januar 2012, 18:52
von Hein_nieH
....aha.
So funktioniert es:
Code: Alles auswählen
Text=u'Ha Ha Ha Ha Oho'
Text=Text.encode('utf16')[2:]
TextNachUtils = pyexiv2.utils.string_to_undefined(Text)
metadata['Exif.Image.XPComment'].value = TextNachUtils
metadata.write()
... war ein Denkfehler von mir.
Gruss Hein_nieH