Seite 1 von 1

Wie bringe ich Python ein neues Datenformat bei?

Verfasst: Dienstag 17. Januar 2012, 00:06
von axon
Guten Abend,

ich habe das Problem, dass das einlesen von tiff Bild Dateien zu langsam dauert (via Image und Image.seek()). Ich würde gern etwas schreiben, dass es python ermöglicht mit diesem Datenformat schneller umzugehen ... wobei schneller heißt alle Daten aufeinmal in den Arbeitsspeicher zu laden und am besten in einem dreidimensionalen Array zu parken.

Wie sollte ich vorgehen? Was muss/müsste ich dazu können? :K [Ich programmiere jetzt schon seit etwas über einem Jahr mit python an dem Projekt für welches ich die tiff Unterstützung schreiben will; Und die langen Laufzeiten, die ich in Java nicht habe nerven mich ein wenig...]

Ich wäre für jede Art des Hinweises dankbar.

Axon

Re: Wie bringe ich Python ein neues Datenformat bei?

Verfasst: Dienstag 17. Januar 2012, 00:14
von Hyperion
axon hat geschrieben: ich habe das Problem, dass das einlesen von tiff Bild Dateien zu langsam dauert (via Image und Image.seek()).
Meinst Du "Pil"? Wenn ja, wieso `seek`?

Re: Wie bringe ich Python ein neues Datenformat bei?

Verfasst: Dienstag 17. Januar 2012, 07:30
von gkuhl
axon hat geschrieben:ich habe das Problem, dass das einlesen von tiff Bild Dateien zu langsam dauert [...] gern etwas schreiben, dass es python ermöglicht mit diesem Datenformat schneller umzugehen [...] am besten in einem dreidimensionalen Array zu parken.
Wenn es dir darum geht ein TIFF in einen NumPy Arrays zu laden, ist PIL leider extrem langsam. Ich hatte das Problem selbst. Es gibt allerdings einige anderen implementieren, die deutlich schneller sein sollen. Einfach mal die Suchmaschine deines Vertrauens fragen. Ich bin übrigens zu PNG gewechselt, was von Matplotlib/SciPy deutlich besser unterstützt wird und unter anderem zlib Kompression erlaubt.
axon hat geschrieben:Wie sollte ich vorgehen? Was muss/müsste ich dazu können?
Du müsstest dir die Spezifikation von TIFF besorgen und einen Parser schreiben. Schau dir mal das ``struct`` Modul an. Es bietet sich an eine TIFF Datei als Klasse zu implementieren.

Grüße
Gerrit

Re: Wie bringe ich Python ein neues Datenformat bei?

Verfasst: Dienstag 17. Januar 2012, 08:12
von Darii
axon hat geschrieben:ich habe das Problem, dass das einlesen von tiff Bild Dateien zu langsam dauert (via Image und Image.seek()). Ich würde gern etwas schreiben, dass es python ermöglicht mit diesem Datenformat schneller umzugehen ...
Ja, das Problem hatte ich auch mal, am einfachsten ist es einfach die tifflib zu wrappen, kannst das benutzen wenn du willst: http://www.python-forum.de/viewtopic.php?f=11&t=24713, readimg ist die Funktion die dich vermutlich primär interessierst. Wenn du mehr als ein Bild pro Datei hast musst du ein bisschen fummeln, das habe ich nur rudimentär irgendwo unterstützt.

Braucht nur die tifflib irgendwo in einem auffindbaren Pfad.