Wie kann man EXTREM große Bilder anzeigen?

9

Ich habe ein 1,8 GB TIF-Image, das ich mit Ubuntu 18.04.1 LTS auf meinem Computer öffnen möchte. Ich habe 8 GB RAM und 2 GB Swap-Speicher. Ich kann das Bild jedoch nicht im Standard-Gnome-Bild-Viewer (sagt "Abmessungen des TIFF-Bildes zu groß") oder in Shotwell (sagt "Fotoquelldatei fehlt: [Pfad zur Datei]") oder Gimp (Fehler) öffnen out) oder auf meiner Windows 7-VM mit 4 GB RAM (sagt zu wenig RAM, obwohl mehr als 2,5 GB frei waren) oder feh, was sich so verhält:

$ feh DO_NOT_OPEN.tif
TIFFFetchNormalTag: Warning, Incompatible type for "RichTIFFIPTC"; tag ignored.
feh WARNING: DO_NOT_OPEN.tif - No Imlib2 loader for that file format
feh: No loadable images specified.
See 'man feh' for detailed usage information

Gibt es eine Möglichkeit, dieses Image unter Ubuntu zu öffnen?

(Für die Neugierigen ist das Bild dieses . Ich habe es so genannt, weil mein Computer beim ersten Versuch, es zu öffnen, abgestürzt ist ¯_ (ツ) _ / ¯)

Michael
quelle
Versuchen Sie auch den imaginären Bildeditor. Wenn dies fehlschlägt, versuchen Sie, das Bild über die Befehlszeile zu skalieren, ohne es zu öffnen. Imagemagic kann dies tun.
LeonidMew
Übrigens, das Bild wurde im Browser mit dem Zoom-Tool dieser Site einwandfrei geöffnet.
LeonidMew
Interessantes Bild :-)
Sudodus
1
Haben Sie bei erfolgreichem Download überprüft, ob Ihre große TIFF-Datei mit der sha256sum (auf der Website verfügbar) übereinstimmt? Ich denke, das gimp sollte mit Ihrem Ubuntu 18.04.1 LTS und 8 GiB RAM (und 2 GiB Swap) funktionieren, da es für mich mit 8GiB RAM funktioniert (siehe meine bearbeitete Antwort).
Sudodus
Warum probieren Sie nicht ihren zoombaren Viewer aus: spacetelescope.org/images/heic1502a/zoomable
stackzebra

Antworten:

4

Warum kann ich das Bild in keinem Viewer öffnen?

Das Problem ist wahrscheinlich RAM und / oder CPU.

Das TIFF-Bild ist LZW-komprimiert. Wenn eine Anwendung es anzeigen möchte, muss sie zuerst das Bild dekomprimieren. Und hier kommen RAM und CPU ins Spiel. Darüber hinaus kann es je nach Anwendung Puffer geben, die auch RAM benötigen.

Ich habe einige (nicht wissenschaftliche) Experimente durchgeführt und Unterschiede zwischen Anwendungen in drei Phasen festgestellt: beim Laden des Bildes, nach dem Laden des Bildes, beim Vergrößern.

Shotwell benötigte beim Öffnen der Datei bis zu 5 GB RAM und fiel dann auf 2 GB zurück. Als ich hineingezoomt habe, waren es bis zu 7 GB.

Gimp stieg auf 5 GB und blieb dort, wenn das Bild angezeigt und vergrößert wurde. Die RAM-Auslastung nahm beim Bearbeiten des Bildes allmählich zu.

GwenView stieg beim Laden auf 3,8 GB und fiel danach auf 2 GB. Beim Vergrößern wurden 2,7 GB erreicht.

Am besten probieren Sie GwenView aus (der Standard-Bildbetrachter in Kubuntu, kann aber auch in Ubuntu installiert werden).

Welche Optionen habe ich, wenn das Image für RAM viel zu groß ist?

Wenn das Image zu groß ist, um in den Arbeitsspeicher zu passen, können Sie es im Allgemeinen mit convertdem Teil des imagemagickPakets aufteilen .

Sie müssen die in definierten Standardgrenzwerte erhöhen /etc/ImageMagick-6/policy.xml(die Zahl 6 kann sich in zukünftigen Versionen ändern). Sie müssen die maximale Größe in Pixel anpassen, die in den folgenden Zeilen definiert sind:

<policy domain="resource" name="width" value="16KP"/>
<policy domain="resource" name="height" value="16KP"/>

KP bedeutet Kilopixel, dh tausend Pixel. In Ihrem Fall hat das Bild 40000 x 12788 Pixel, sodass Sie nur die Breite auf etwas größer als 40 KB ändern müssen, z. B. 41 KB.

Außerdem müssen Sie den maximalen Speicherplatz erhöhen:

<policy domain="resource" name="disk" value="1GiB"/>

zu etwas Vernünftigem wie 10GiB.

Verwenden Sie den folgenden Befehl, um das Bild in 5 x 3 Teile aufzuteilen und eine Datei pro Teil zu erstellen:

convert -crop 5x3@ inputfile.tif outputfile%0d.tif

Weitere Informationen convertfinden Sie unter Man Convert oder in der Dokumentation .


Vielleicht etwas abseits des Themas, aber hier ist ein schnelles und schmutziges Bash-Skript, das ein Bild kachelt und eine HTML-Seite erstellt, die eine Übersicht anzeigt, in der Sie auf eine Kachel klicken können, um sie in voller Auflösung zu öffnen. Speichern Sie es als zB tile_image.shund rufen Sie es wie ./tile_image.sh originalImage tilesX tilesYfolgt auf , wobei tilesX die Anzahl der Kacheln horizontal und tilesY die Anzahl der Kacheln vertikal ist.

#!/bin/bash
INPUT_FILE=$1
TILES_X=$2
TILES_Y=$3
OUTPUT_FILE=${INPUT_FILE%.*}_tile_%0d.png
convert -crop $TILES_X"x"$TILES_Y\@ $INPUT_FILE $OUTPUT_FILE
HTML_FILE=${INPUT_FILE%.*}_tile_view.html
echo "<html><body><style type="text/css">table,tr,td,a {padding:0;border-spacing:0} img:hover {opacity:.9}</style><table>" > $HTML_FILE
X=0
Y=0
while [ $Y -lt $TILES_Y ]; do
    echo "<tr>" >> $HTML_FILE
    while [ $X -lt $TILES_X ]; do
        TILE_NUMBER=$(echo $Y*$TILES_X+$X | bc -l)
        TILE_NAME=${INPUT_FILE%.*}_tile_$TILE_NUMBER.png
        THUMBNAIL=${INPUT_FILE%.*}_tile_$TILE_NUMBER"_thumb.png"
        convert -resize 100x100 $TILE_NAME $THUMBNAIL
        echo "<td><a href=\""$(basename $TILE_NAME)"\"><img src=\""$(basename $THUMBNAIL)"\"></a></td>" >> $HTML_FILE
        let X=X+1
    done
    let X=0
    echo "</tr>" >> $HTML_FILE
    let Y=Y+1
done
echo "</table></body></html>" >> $HTML_FILE
Danzel
quelle
Nettes Bash-Skript, um das Bild verfügbar zu machen, wenn nicht genügend RAM vorhanden ist :-) Ich habe Ihre Antwort bereits positiv bewertet, würde es aber nach Möglichkeit erneut tun.
Sudodus
Wie von @sudodus festgestellt, bestand mein Fehler nicht darin, den Download zu überprüfen und zu versuchen, ein beschädigtes Bild zu öffnen. Es stellt sich heraus, dass Gimp und Shotwell es beide öffnen können, ImageViewer stürzt immer noch ab. Abgesehen von meinem Fehler ist dies jedoch eine großartige Antwort und das Skript hat wunderbar funktioniert, und daher markiere ich es als akzeptiert :)
Michael
2

Prüfung

Ich habe getestet, um die 1.7 GiB Tiff-Datei in einem Dell Precision M4800 mit 16 GiB RAM und Ubuntu 18.04.1 LTS mit Wayland anzuzeigen. Ich habe mit gimpauch in einem Dell Latitude E7240 mit 8 GiB RAM und 18.04.1 LTS beständig live mit Xorg getestet .

Die gesamte RAM-Auslastung einschließlich Betriebssystem wird mit gemessen free -m.

  • gimp- funktioniert am besten für mich auch bei voller Auflösung (ohne Verzögerung), 6143 MiB RAM. Es funktioniert gut mit 16 GiB RAM und 8 GiB RAM.

  • shotwell - funktioniert auch bei voller Auflösung (ohne Verzögerung), 7920 MiB RAM (nach einigen horizontalen und vertikalen Bildläufen bei voller Auflösung)

  • gpicview - funktioniert aber langsamer (zeigt nicht direkt die volle Auflösung an, funktioniert aber beim schrittweisen Vergrößern auf volle Auflösung, Gesamt-RAM-Auslastung beim Anzeigen und Zoomen von 3016 MiB RAM, aber 4219 MiB RAM beim Laden.

  • feh - funktioniert nicht 'Kein ImLib2-Loader für dieses Dateiformat'

  • eog - funktioniert nicht "zu großes Bild"
  • ristretto - funktioniert nicht (lautlos, zeigt ein Miniaturbild, aber kein Bild)

Fazit

Es sollte mit Ubuntu und 8 GiB RAM funktionieren, um dieses Bild mit mehreren Zuschauern anzuzeigen, und der Editor gimp funktioniert wirklich gut für mich. Mit 6 GiB RAM sollten Sie einen leichten Viewer auswählen, und mit 4 GiB sollten Sie wahrscheinlich bereit sein, auf einen Austausch zu warten.

Bitte beachten Sie, dass ich die Gesamtauslastung des Arbeitsspeichers (einschließlich des Betriebssystems) gemessen habe.

Abschließender Kommentar

Dies ist ein großartiges Bild, das es wert ist, mit den verfügbaren Werkzeugen vergrößert zu werden. Ich sollte hinzufügen, dass das Zoom-Tool der Website mit Firefox für mich in einem Computer mit 4 GB RAM gut funktioniert. Ich könnte eine Zoomstufe erreichen, die der vollen Auflösung der 1,7 GB Tiff-Datei entspricht, und ich könnte horizontal und vertikal scrollen, um zu sehen das ganze Bild.

Sudodus
quelle
Ich bin beeindruckt, dass Sie sich die Zeit genommen haben, ein Bild mit 1,7 GB herunterzuladen
Charles Green
1
@ CharlesGreen, nun, mit ~ 10 MB / s sind es nur 1700/10 Sekunden ~ 3 Minuten (nicht zu lang). Und es ist ein tolles Bild :-)
Sudodus
Ich bin am Ende einer nicht sehr schnellen DLS-Verbindung - sie sagen 10 Mb / s, also ... 24 Minuten? Aber Firefox sagt ~ 3 Stunden ....
Charles Green
@ CharlesGreen, ich hatte Glück, die Website war nicht besetzt, so dass sie mit hoher Geschwindigkeit senden konnte. Ich hoffe, Ihre Geschwindigkeit steigt innerhalb weniger Minuten.
Sudodus