Umgang mit riesigen (möglicherweise über 30000x30000) Bildern in Python?

9

Ich versuche, ein Python-Skript namens deepzoom.py zu verwenden, um große Overhead-Renderings (oft über 1GP) in das Deep-Zoom-Bildformat zu konvertieren (dh google maps-esque tile format), aber leider wird es von PIL unterstützt, was normalerweise aufgrund von Speicherbeschränkungen abstürzt. Der Ersteller hat gesagt, dass er sich in VIPS vertieft, aber sogar nip2 (das GUI-Frontend für VIPS) kann das Bild nicht öffnen. In einer anderen Frage von jemand anderem (obwohl zum selben Thema) schlug jemand OpenImageIO vor, was so aussieht hat die Fähigkeit, und hat Python-Wrapper, aber es gibt keine richtigen Binaries zur Verfügung gestellt, und der Versuch, es unter Windows zu kompilieren ist ein Albtraum.

Gibt es alternative Bibliotheken für Python, die ich benutzen kann? Ich habe versucht PythonMagickWand (Wrapper für ImageMagick) und PythonMagick (Wrapper für GraphicsMagick), aber beide von ihnen auch in Speicherprobleme.

    
Nicolas 07.12.2010, 03:30
quelle

4 Antworten

3

Ich hatte ein sehr ähnliches Problem und habe es gelöst, indem ich netpbm benutzt habe, was gut für Windows funktioniert. Netpbm hatte kein Problem damit, riesige .png-Dateien zu konvertieren und dann zu schneiden, zu beschneiden, neu zu kombinieren (mit Pamcrop, Pamdice und Pamundice) und zurück zu .png zu konvertieren, ohne viel Speicher zu verbrauchen. Ich habe nur die notwendigen netpbm Binaries und DLLs mit meiner Anwendung und rief sie von Python.

    
dagw 23.05.2011 07:48
quelle
1

Es klingt, als würden Sie georeferenzierte Bilder oder etwas Ähnliches verwenden, für das eine GIS-Lösung passender klingt. Ich würde GDAL verwenden - es ist eine ausgezeichnete Bibliothek und kommt mit einfach zu verwendenden Python-Bindungen über Swig.

Unter Windows ist der einfachste Weg, es zu installieren, Frank Warmerdams FWTools Paket.

    
Daniel Pryden 07.12.2010 03:35
quelle
1

libvips enthält einen sehr schnellen DeepZoom-Ersteller, der mit Bildern jeder Größe arbeiten kann. Probieren Sie:

%Vor%

Schreibt die Kacheln in mydz_files und schreibt auch eine mydz.dzi info Datei für Sie. Es ist normalerweise 10x schneller als deepzoom.py und hat keine Größenbeschränkung.

Siehe dieses Kapitel im Handbuch für eine Einführung in dzsave .

    
user894763 08.03.2013 12:14
quelle
0
___ answer15293791 ___

libvips enthält einen sehr schnellen DeepZoom-Ersteller, der mit Bildern jeder Größe arbeiten kann. Probieren Sie:

%Vor%

Schreibt die Kacheln in %code% und schreibt auch eine %code% info Datei für Sie. Es ist normalerweise 10x schneller als %code% und hat keine Größenbeschränkung.

Siehe dieses Kapitel im Handbuch für eine Einführung in %code% .

    
___ antwort4373448 ___

Ist eine Teillast sinnvoll? Wenn Sie PIL verwenden und das Bildformat .BMP lautet, können Sie () eine Bilddatei öffnen (die sie nicht lädt), dann einen Ausschnitt () erstellen und dann laden - wodurch nur der Bildteil tatsächlich geladen wird die Sie nach Zuschneiden ausgewählt haben. Wird wahrscheinlich auch mit TGA arbeiten, vielleicht sogar für JPG und weniger effizient für PNG und andere Formate.

    
___ answer6094300 ___

Ich hatte ein sehr ähnliches Problem und habe es gelöst, indem ich netpbm benutzt habe, was gut für Windows funktioniert. Netpbm hatte kein Problem damit, riesige .png-Dateien zu konvertieren und dann zu schneiden, zu beschneiden, neu zu kombinieren (mit Pamcrop, Pamdice und Pamundice) und zurück zu .png zu konvertieren, ohne viel Speicher zu verbrauchen. Ich habe nur die notwendigen netpbm Binaries und DLLs mit meiner Anwendung und rief sie von Python.

    
___ answer4373168 ___

Es klingt, als würden Sie georeferenzierte Bilder oder etwas Ähnliches verwenden, für das eine GIS-Lösung passender klingt. Ich würde GDAL verwenden - es ist eine ausgezeichnete Bibliothek und kommt mit einfach zu verwendenden Python-Bindungen über Swig.

Unter Windows ist der einfachste Weg, es zu installieren, Frank Warmerdams FWTools Paket.

    
___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend. ___ qstnhdr ___ Umgang mit riesigen (möglicherweise über 30000x30000) Bildern in Python? ___ qstntxt ___

Ich versuche, ein Python-Skript namens deepzoom.py zu verwenden, um große Overhead-Renderings (oft über 1GP) in das Deep-Zoom-Bildformat zu konvertieren (dh google maps-esque tile format), aber leider wird es von PIL unterstützt, was normalerweise aufgrund von Speicherbeschränkungen abstürzt. Der Ersteller hat gesagt, dass er sich in VIPS vertieft, aber sogar nip2 (das GUI-Frontend für VIPS) kann das Bild nicht öffnen. In einer anderen Frage von jemand anderem (obwohl zum selben Thema) schlug jemand OpenImageIO vor, was so aussieht hat die Fähigkeit, und hat Python-Wrapper, aber es gibt keine richtigen Binaries zur Verfügung gestellt, und der Versuch, es unter Windows zu kompilieren ist ein Albtraum.

Gibt es alternative Bibliotheken für Python, die ich benutzen kann? Ich habe versucht PythonMagickWand (Wrapper für ImageMagick) und PythonMagick (Wrapper für GraphicsMagick), aber beide von ihnen auch in Speicherprobleme.

    
___ tag123pythonimaginglibrary ___ Die Python Imaging Library (PIL) bietet der Python-Sprache eine de-facto-Standardgrundlage für die Bildbearbeitung. Die API von PIL ist leicht, aber semantisch konsistent; Es bietet eine Reihe komfortabler Pythonic-Tools für einen Großteil des Imaging-Lexikons: Verarbeitung, Analyse, Komprimierung und Codec-Abstraktion usw. - all dies baut auf einer maßgeschneiderten und leicht erweiterbaren Bibliotheksstruktur auf. ___ tag123image ___ Das Bild-Tag ist für Fragen im Zusammenhang mit dem Laden, Formatieren, Speichern, Komprimieren und Anzeigen von Bildern im Kontext des Quellcodes gedacht. Dieses Tag sollte auch zur Unterstützung verschiedener Bildbibliotheken verwendet werden. Fragen zu bestimmten Bildformaten sollten die Tags für diese Formate enthalten. ___
greggo 07.12.2010 04:38
quelle