web-dev-qa-db-ja.com

非常に大きな画像を表示するにはどうすればよいですか?

Ubuntu 18.04.1 LTSを搭載したマシンで1.8GB TIFイメージを開こうとしています。 8GBのRAMと2GBのスワップスペースがあります。しかし、ストックのGnome Image Viewer(「TIFF画像のサイズが大きすぎる」と言います)、またはShotwell( 「写真のソースファイルが見つかりません:[ファイルへのパス]」、またはGimp(バグアウト)、または私のWindows 7 VM with 4GB of RAM =(少なすぎると言いますRAM 2.5GB以上の空き容量があったとしても)、またはfehは次のように動作します:

$ 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

Ubuntuでこの画像を開く方法はありますか?

(奇妙なことに、画像は これ です。初めて開こうとしたときにコンピューターがクラッシュしたため、このように名前を付けました¯_(ツ)_ /¯)

9
Michael

どのビューアでも画像を開けないのはなぜですか?

問題はおそらくRAMおよび/またはCPUです。

TIFF画像はLZW圧縮されています。アプリケーションで表示する場合は、まず画像を解凍する必要があります。そして、ここでRAMとCPUが関係します。さらに、アプリケーションによっては、RAMも必要とするバッファがあるかもしれません。

私はいくつかの(非科学的な)実験を行い、3つのフェーズでアプリケーション間の違いに気づきました:画像の読み込み時、画像の読み込み後、ズームイン時。

Shotwellは、ファイルを開くときに最大5GBのRAMを使用し、その後2GBにドロップしました。ズームインすると、最大7GBになりました。

Gimpは5GBまで増え、画像を表示してズームインしたときにそのまま残っていました。編集時にRAM使用量が徐々に増加しました画像。

GwenViewは読み込み中に3.8GBになり、その後2GBに落ちました。ズームインすると2.7GBになりました。

あなたの最善の策は、GwenView(Kubuntuのデフォルトの画像ビューアですが、在庫のUbuntuにもインストールできます)を試すことです。

イメージがRAMに対して大きすぎる場合、どのようなオプションがありますか?

一般に、イメージが大きすぎてRAMに収まらない場合は、convertパッケージの一部であるimagemagickを使用して分割できます。

/etc/ImageMagick-6/policy.xmlで定義されているデフォルトの制限を増やす必要があります(数値6は将来のバージョンで変更される可能性があります)。次の行で定義されている最大サイズをピクセル単位で調整する必要があります。

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

KPは、キロピクセル、つまり1000ピクセルを意味します。あなたの場合、画像は40000x12788ピクセルなので、幅を変更するだけですより大きい 40KP、たとえば41KP。

さらに、最大ディスク容量を増やす必要があります。

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

10GiBのような合理的なものに。

画像を5x3のパーツに分割し、パーツごとに1つのファイルを作成するには、次のコマンドを使用します。

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

convertの詳細については、 man convert を参照するか、- documentation をご覧ください。


少し話題にならないかもしれませんが、画像を並べて表示し、タイルをクリックしてフル解像度で開くことができる概要を表示するhtmlページを作成する、簡単で汚いbashスクリプトを次に示します。例として保存します。 tile_image.shを呼び出して、./tile_image.sh originalImage tilesX tilesYのように呼び出します。ここで、tilesXは水平方向のタイルの数で、tilesYは垂直方向のタイルの数です。

#!/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
4
danzel

テスト

1.7 GiB 16のDell Precision M4800のTiffファイルGiB RAMおよびUbuntu 18.04.1 Waylandを使用したLTS。8GiB RAMおよび18.04.1 LTSを使用して、Dell Latitude E7240でもgimpでテストしましたXorgの永続的なライブ

合計RAMオペレーティングシステムを含む使用量は、free -m

  • gimp-フル解像度(遅延なし)、6143 MiB RAMでも最適です。 16 GiB RAM and 8 GiB RAM。

  • shotwell-フル解像度でも動作します(遅延なし)、7920 MiB RAM(後でフル解像度での水平および垂直スクロール)

  • gpicview-動作しますが遅くなります(最大解像度を直接表示できませんでしたが、徐々に最大解像度にズームインすると機能します。合計RAM 3016 MiB RAMを表示およびズームする場合の使用法。ただし、4219 MiB RAMロード中。

  • feh-「そのファイル形式のImLib2ローダーはありません」は機能しません

  • eog-「大きすぎる画像」では機能しません
  • ristretto-機能しません(静かに、サムネイルは表示されますが、画像は表示されません)

結論

Ubuntuと8で動作するはずですGiB RAMこの画像を複数のビューアで表示するには、エディタgimpは私にとって非常にうまく機能します。6GiB RAMの場合、軽量のビューアを選択する必要があり、4 GiBスワッピングを待つ準備をしました。

RAM(オペレーティングシステムを含む))の合計使用量を測定したことに注意してください。

最終コメント

これは、利用可能なツールを使用して拡大する価値のある素晴らしい画像です。 Webサイトズームツール が、4 GBのRAMを搭載したコンピューターのFirefoxでうまく機能することを追加する必要があります。フル解像度に対応するズームレベルに到達できます。 1.7 GBのTiffファイルで、水平方向と垂直方向にスクロールして全体像を見ることができました。

2
sudodus