4

512x512 タイルに分割してディスクに書き込みたい大きな Tiff 画像があります。

過去に私は ImageMagick を次のように使用しました。

convert -crop 512x512 +repage image_in.tif image_out_%d.tif

しかし、最近、これは機能していません。プロセスがメモリ不足になっているなどです。

VIPS に同様のコマンドはありますか? CLI があることは知っていますが、ドキュメントで例や役立つ説明を見つけることができず、まだ nip2 GUI のことを理解しようとしています。どんな助けでも感謝します。:)

4

2 に答える 2

10

libvipsには、これを非常に迅速に実行できる演算子があります。試す:

$ vips dzsave wtc.tif outdir --depth one --tile-size 512 --overlap 0 --suffix .tif

これは、TIFタイルの深さ1のピラミッドを作成するDeepZoomライターです。outdir_files/0出力タイルを探します。ドキュメントには、 dzsaveの使用方法について説明しているがあります。

私にとってはIMよりもはるかに高速です。

$ time convert -crop 512x512 +repage huge.tif x/image_out_%d.tif
real    0m5.623s
user    0m2.060s
sys     0m2.148s
$ time vips dzsave huge.tif x --depth one --tile-size 512 --overlap 0 --suffix .tif
real    0m1.643s
user    0m1.668s
sys     0m1.000s

huge.tif10,000x10,000ピクセルの非圧縮RGB画像はどこにありますか。さらに、少量のメモリで任意のサイズの画像を処理します。

于 2013-03-08T11:38:12.870 に答える
1

私は同じ問題に直面しています。VIPS には上記の imagemagick のような組み込みコマンドがないようですが、いくつかのスクリプト (Python コード スニペット) を使用してこれを行うことができます。

for x in xrange(0, tiles_per_row):
    xoffset = x * tile_size
    for y in xrange(0, tiles_per_row):
        yoffset = y * tile_size
        filename = "%d_%d_%d.png" % (zoom, x, y)
        command = "vips im_extract_area %s %s %d %d %d %d" % (base_image_name, filename,  xoffset, yoffset, tile_size, tile_size)
        os.system(command)

ただし、imagemagick クロッピングと同じ速度は得られません...

于 2012-06-19T09:44:34.463 に答える