【问题标题】:Chop image into tiles using VIPS command-line使用 VIPS 命令行将图像切割成图块
【发布时间】:2012-06-06 20:41:55
【问题描述】:

我有一个大的 Tiff 图像,我想将它切成 512x512 的图块并写入磁盘。

过去我曾像这样使用 ImageMagick:

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

但最近这一直不起作用,进程内存不足等。

VIPS 中是否有类似的命令?我知道有一个 CLI,但我在文档中找不到示例或有用的解释,我仍在尝试找出 nip2 GUI 的东西。任何帮助表示赞赏。 :)

【问题讨论】:

    标签: image-processing imagemagick


    【解决方案1】:

    libvips 有一个接线员可以很快地为您完成这项工作。试试:

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

    这是 DeepZoom 编写器制作深度为 1 的 tif 瓷砖金字塔。在outdir_files/0 中查找输出图块。有一个chapter in the docs在谈论如何使用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.tif 是 10,000 x 10,000 像素的未压缩 RGB 图像。此外,它只在少量内存中处理任何大小的图像。

    【讨论】:

    • 是否可以给瓷砖自定义名称,例如包括行和列或 x/y 坐标?我在文档中没有看到这样的选项,但 libvips 对我来说是新的。
    • 在这个例子中,瓷砖被命名为column_row.tif,你是这个意思吗?
    • 是的,谢谢,这对我很有用。我的问题是是否可以像在 ImageMagick 中一样在 vips 中自定义图块名称。例如,是否可以包含 X/Y 坐标而不是行/列?我也想知道在重叠区域会发生什么,其中一些程序求和或“羽毛”像素。我希望 vips 两者都不做——也就是说,它只是重复原始值。
    • dzsave 输出 deepzoom / google maps / zoomify / iiif 金字塔,因此您可以从这些命名约定中进行选择。重叠只是图块之间共享的像素,例如。对于重叠 1,图块 0_0 中最右边的两列与图块 1_0 中最左边的两列相同。如果您想要不重叠的图块,请将重叠设置为 0。
    • 感谢您的澄清。它似乎是一个非常有用的库。
    【解决方案2】:

    我遇到了同样的问题。似乎 VIPS 没有像上面 imagemagick 那样的内置命令,但你可以通过一些脚本(Python-code sn-p)来做到这一点:

    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 裁剪相同的速度...

    【讨论】:

    • 顺便说一句,在这种情况下,我发现基本 graphicsmagick 比 imagemagick 工作得更好,如果你摆弄 memlimit 和文件写入选项(对不起,我不记得我最终现在使用)。
    猜你喜欢
    • 2013-12-05
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多