die Idee mit "H" hat leider nix gebracht,der Fehler lautet jetzt:
Code: Alles auswählen
DSC02055.JPG - LEN > valueFlat 0x0 122683392
LEN > valueFlat 0x7d00 134217984
LEN > valueFlat 0x800 16777308
LEN > valueFlat 0x8a 65563
LEN > valueFlat 0x30 122684496
LEN > valueFlat 0x5 32768760
Traceback (most recent call last):
...
File "C:\Python26\lib\site-packages\jpeg\jpeg.py", line 178, in setExif
return _write(exif.binary(), file, exif.jpegMarker)
File "C:\Python26\lib\site-packages\jpeg\jpeg.py", line 109, in _write
lenHex = util.setNr(len(value)+2, "short") #the length on 2 bytes
File "C:\Python26\lib\site-packages\jpeg\util.py", line 50, in setNr
val = struct.pack(frm, nr)
struct.error: ushort format requires 0 <= number <= USHRT_MAX
ich habe mal bissel gestöbert, der Hund liegt hier begraben :
exif.py
Code: Alles auswählen
try:
self.bytes = self.typeMap[self.type]
self.len = self.bytes * self.count
except:
raise ValueError, "Value type %s is not supported for %s - %s" % (self.type, self.niceID(), repr(tag))
if self.len <= 4:
self.valueFlat = tag[8:] #as it needs to be written back into the file
self.value = self._getVal(tag[8:])
self.originalOffset = None
else:
offset = util.getNr(tag[8:], self.endian)
self.originalOffset = offset
self.valueFlat = tiff[offset: offset + self.len] #<----------
self.value = self._getVal(tiff[offset: offset + self.len]) #<----------
if (self.len>len(self.valueFlat)): #<----------
print "LEN > valueFlat", self.niceID(), self.len
self.len = len(self.valueFlat)
self.count = self.len / self.bytes
if self.count <= 0: self.count = 1
aber das sind für mich böhmische Dörfer
deit: hiermal Dein Script mit pool.map()
http://paste.pocoo.org/show/MrDZpUF2dJTjSpFzpeGZ/
ich mußte es ein bissel umschreiben, damit es funktioniert, dabei habe ich exeptions usw. mal weggelassen (war für mich nur ein Testobjekt)