如何将dzi文件转换为多瓦片金字塔tiff格式

问题描述 投票:0回答:1

参考答案(how to convert dzi (deep zoom) files to full image

我是这个主题的菜鸟,如果我错了,请更正。

我正在尝试从.dzi(深度缩放图像)格式创建多平铺tiff,我的工作是:

((i)选择最高级别的文件夹。

(ii)将m行的所有n列(m_n.jpeg,我指的是以这种格式保存的图像)垂直拼接为png图像。因此它们占据了相当大的空间。

((iii)最后,我使用pyvips.Image.write_to_file()将所有这些垂直png图像水平合并为一个完整的图像png。

((iv)最后使用vips im_save,我将整个图像png转换为tiff。

[我现在担心的是,此过程要花费将近2个小时才能制作出30,000 base_tiles的完整图像png,而且它的大小也超过10 GB(完整图像png)。

是否有更好,更快的方法来完成.dzi到tiff的转换?

imagemagick tiff deepzoom openseadragon openslide
1个回答
0
投票

[libvips具有arrayjoin运算符,可以将一组图块连接在一起成为大图像。

您可以这样使用它(在linux命令行上:):>

arrayjoin

这将把所有JPG图像加载到当前目录中,将它们组装成一个巨大的网格,跨20个图像,并以TIFF金字塔的形式写入。显然,您需要检查网格的大小,然后调整vips arrayjoin "$(ls *.jpeg | sort -t_ -k2g -k1g)" x.tif[tile,pyramid,compression=jpeg] --across 20 参数。

across部分首先按y的顺序对$()格式的文件名进行排序,然后按数字顺序对x进行排序。没有这些,瓷砖将被烦人地换位。

假设重叠为0。如果图块重叠,则需要设置x_y.jpghspacing选项来控制图块的放置方式。例如:

vspacing

将水平和垂直每254个像素放置磁贴。

vips arrayjoin "$(ls *.jpg | sort -t_ -k2g -k1g)" x.tif --across 20 --hspacing 254 --vspacing 254 必须能够打开所有输入图像,因此它需要很多文件描述符。大多数Linux默认每个进程一次最多打开1024个文件,因此您可能需要提高该数目。通常,您只需编辑几个配置文件,然后再次注销即可。我将系统设置为65536,但是您可以使用任何数字。

Windows对每个进程的硬限制是2000个文件,您不能更改。您需要在该平台上的各个部分中进行组装。

© www.soinside.com 2019 - 2024. All rights reserved.