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
Wie bringe ich Python ein neues Datenformat bei?
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Meinst Du "Pil"? Wenn ja, wieso `seek`?axon hat geschrieben: ich habe das Problem, dass das einlesen von tiff Bild Dateien zu langsam dauert (via Image und Image.seek()).
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
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: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.
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.axon hat geschrieben:Wie sollte ich vorgehen? Was muss/müsste ich dazu können?
Grüße
Gerrit
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.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 ...
Braucht nur die tifflib irgendwo in einem auffindbaren Pfad.