Tiffany - Multipage-Tiff Lesen und Schreiben mit PIL ohne PIL

Summary

Tiffany steht für beliebiges Tiff. Das kleine Modul löst eine grosse Menge

von Problemen, hat keine Abhängigkeiten, keine Binaries und läuft

überall wo Python läuft.

Bei der Entwicklung von Pydica (Distributed Document Capture) wurden wir

mit dem Problem konfrontiert, mehrseitige Tiff-Dateien anzuzeigen. Das

GUI-Toolkit PySide (Qt) unterstützt zwar Tiff, zeigt jedoch nur die erste Seite.

Zudem behandeln wir Fax-komprimierte Dateien, was Qt aber unterstützt.

PIL verfügt über eine Bereinigung der Tiff-Tags, kommt aber nicht mit der

Fax-Kompression zurecht. Es gibt seit langem einen Patch dafür, jedoch ist

der Build-Prozess erschwert und zieht mit libtiff eine Kette von Abhängigkeiten

nach sich.

Daher benutzt Tiffany einige wenige Dateien aus PIL ohne diese zu verändern und täuscht

vor, die Tiff-Dateien zu entpacken, tut es aber nicht. Es werden lediglich die

Tiff-Tags ordentlich aufbereitet. Die komprimierten Daten werden so übernommen

wie sie sind. Beim Schreiben von Dateien werden daher lediglich die vorhandenen

Daten in anderer Reihenfolge wieder zusammengesetzt.

Im Vortrag werde ich die Implementierung vorstellen sowie weitere Alternativen,

die Zukunft von PIL sowie auf weitere Tips und Kniffe in unserem Projekt eingehen.