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

2023-12-26

参考答案(如何将 dzi(深度变焦)文件转换为完整图像 https://stackoverflow.com/questions/53986084/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 的转换?


libvips https://libvips.github.io/libvips/ has an arrayjoin https://libvips.github.io/libvips/API/current/libvips-conversion.html#vips-arrayjoin可以将一组图块连接在一起形成大图像的运算符。

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

vips arrayjoin "$(ls *.jpeg | sort -t_ -k2g -k1g)" x.tif[tile,pyramid,compression=jpeg] --across 20

这将加载当前目录中的所有 JPG 图像,将它们组装成一个巨大的网格,包含 20 个图像,并写入为 TIFF 金字塔。显然,您需要检查网格的大小,并调整across范围。

The $()部分对表单的文件名进行排序x_y.jpeg按数字顺序先按 y,然后按 x。如果没有这个,瓷砖就会被调换位置,这很烦人。

假设重叠为 0。如果您的图块有重叠,则需要设置hspacing and vspacing控制图块如何定位的选项。例如:

vips arrayjoin "$(ls *.jpg | sort -t_ -k2g -k1g)" x.tif --across 20 --hspacing 254 --vspacing 254

将在水平和垂直方向上每 254 像素定位图块。

这是一个有效的例子。首先,创建一个没有重叠的 deepzoom 金字塔:

john@kiwi:~/pics/x$ vips dzsave ~/pics/k2.jpg x --overlap 0
john@kiwi:~/pics/x$ cd x_files/11
john@kiwi:~/pics/x/x_files/11$ ls
0_0.jpeg  0_7.jpeg  1_5.jpeg  2_3.jpeg  3_1.jpeg  3_8.jpeg  4_6.jpeg  5_4.jpeg
0_1.jpeg  0_8.jpeg  1_6.jpeg  2_4.jpeg  3_2.jpeg  4_0.jpeg  4_7.jpeg  5_5.jpeg
0_2.jpeg  1_0.jpeg  1_7.jpeg  2_5.jpeg  3_3.jpeg  4_1.jpeg  4_8.jpeg  5_6.jpeg
0_3.jpeg  1_1.jpeg  1_8.jpeg  2_6.jpeg  3_4.jpeg  4_2.jpeg  5_0.jpeg  5_7.jpeg
0_4.jpeg  1_2.jpeg  2_0.jpeg  2_7.jpeg  3_5.jpeg  4_3.jpeg  5_1.jpeg  5_8.jpeg
0_5.jpeg  1_3.jpeg  2_1.jpeg  2_8.jpeg  3_6.jpeg  4_4.jpeg  5_2.jpeg
0_6.jpeg  1_4.jpeg  2_2.jpeg  3_0.jpeg  3_7.jpeg  4_5.jpeg  5_3.jpeg

您可以看到它由宽 6、下 9 的瓷砖组成的网格。

现在重新组装图块并写入 TIFF 金字塔:

john@kiwi:~/pics/x/x_files/11$ vips arrayjoin "$(ls *.jpeg | sort -t_ -k2g -k1g)" x.tif[tile,pyramid,compression=jpeg] --across 6
john@kiwi:~/pics/x/x_files/11$ vipsheader x.tif 
x.tif: 1524x2286 uchar, 3 bands, srgb, tiffload_stream

使用 pyvips 会是这样的:

#!/usr/bin/env python3
  
import pyvips

tiles_across = 142
tiles_down = 150

tiles = [pyvips.Image.new_from_file(f"{x}_{y}.jpeg", access="sequential")
         for y in range(tiles_down) for x in range(tiles_across)]
im = pyvips.Image.arrayjoin(tiles, across=tiles_across)

im.write_to_file("x.jpg")

在这台笔记本电脑上加入 21,000 个区块需要大约 10 分钟和 6GB 内存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 dzi 文件转换为多瓦金字塔 tiff 格式 的相关文章

  • imagemagick:创建一个 .png 文件,它只是一个实心矩形

    我想创建一个纯色的 png 文件 使用 ImageMagick 一定很容易做到这一点 但我无法找出问题所在 C tmp gt convert size 8x16 stroke black fill black draw rectangle
  • 如何使用 ImageMagick 查找每英寸像素 (PPI)

    我可以使用以下命令获取 JPEG 图像的 PPI identify format w x h x x y mypic jpg 1600 x 1200 72 PixelsPerInch x 72 PixelsPerInch 但是 当我在 PN
  • Rails 3 - RMagick 使用 Paperclip 找不到 libfreetype.6.dylib

    我正在尝试使用回形针上传一些图像 它工作正常 但如果我想添加一些样式 styles gt small gt 100x100 它不再工作了 我收到此错误消息 myImage 识别 命令无法识别 所以 我在网上找到了一些提示 我用 Brew 安
  • 将多页 PDF 转换为单个图像

    我必须将多页 PDF 文档转换为 png 图像 我尝试使用 ImageMagick 但无法获得最终结果 convert document pdf document png or convert adjoin document pdf doc
  • 将 PNG 图像中的透明度替换为白色背景

    我有一个带有 Alpha 通道 即透明度 的 PNG 图像 我需要创建将图像层合成到白色背景上的版本 我想使用可编写脚本的命令 使用 CLI 工具 例如 Image Magick 将 PNG 直接无损地转换为 PNG 导致错误的非工作 Im
  • 错误:通过 Homebrew 安装 ImageMagick 时未定义方法 `=~'

    当我尝试通过 Homebrew 安装 ImageMagick 时 我得到了一个非常奇怪的答案 它给了我这个 Holger Sindbaeks MacBook Air showwwdown 0 3 holgersindbaek brew in
  • 将图像裁剪或遮罩成圆形

    使用 ImageMagick 或 GD 库将图像裁剪或遮罩成圆形形状的最佳方法是什么 请注意 解决方案存在于 其他 问答网站上 但不存在于 StackOverflow 上 这是使用 ImageMagick 的一种方法 无需使用遮罩即可实现此
  • ImageMagick 在命令行中工作,但是当 php 中的 exec() 时,它返回 5 并显示“不兼容的库版本”

    我在 OS X 上使用 MAMP 以及 Macports 的 php 5 3 6 和 ImageMagick 命令行 遇到了一个奇怪的问题 当我从 CLI 运行识别命令时 它工作正常 但是当我使用运行完全相同的命令时exec 它返回一个值代
  • 将 pdf 文件转换为 tiff 文件的最佳方法 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从 GIF 提取帧到 PNG 时丢失数据?

    当我尝试使用 fraxel 的答案时 http stackoverflow com questions 10269099 pil convert gif frames to jpg 在图像上http 24 media tumblr com
  • 在 C# 中快速加载/读取 TIFF 文件

    我正在编写一个处理 TIFF 图像的 C 应用程序 主要是显示文件 重新排序页面 删除页面 分割多页图像 将单个图像合并为一个多页图像等 我们处理的大多数图像都较小 无论是文件大小还是页码 但也有一些较大的图像 显示图像时 我们需要将多页
  • 将 PDF 转换为 JPG 时质量低

    我正在尝试使用 Imagemagic RMAgick 将 PDF 文档转换为图像 原始 PDF 也是从图像创建的 不是原生矢量 PDF image Magick Image from blob original pdf self forma
  • 使用 PHP 将 SVG 图像转换为 PNG

    我正在开发一个网络项目 该项目涉及动态生成的美国地图 根据一组数据为不同的州着色 这个 SVG 文件为我提供了一张很好的美国空白地图 并且很容易更改每个州的颜色 困难在于 IE 浏览器不支持 SVG 因此为了让我使用 svg 提供的便捷语法
  • 在 TIFF 中创建带有缩略图的子 IFD (libtiff)

    我知道thumbnail c包含一些创建缩略图并将其放置在子IDF中的代码 但是该代码中发生了很多事情 生成缩略图 应用对比度曲线等 并且我很难重现写缩略图 谷歌也没有提供任何帮助 我的问题是 在我打开输出文件并获得 TIFF 后 我的缩略
  • 将 PDF 转换为 600dpi 的 TIFF 和 jpg 96 dpi

    我想使用 ImageMagick 从 Python 脚本将 pdf 转换为 600 dpi 的 tiff 和 96 dpi 的 jpg 我使用 imagemagick 命令行完成了这项任务 但我想使用python中的Imagemagick将
  • 除了标准/渐进之外,第三种JPEG压缩:按通道加载?

    这个问题可能是一个 开放式问题 你们中的许多人可能渴望结束它 但请不要这样做 让我解释 众所周知 JPEG有两种压缩方式 至少在Photoshop保存对话框中 优化 图像加载有点像逐行加载 渐进式 图像首先像马赛克一样加载 逐渐更好 直到原
  • 在 Imagemagick 中创建阴影效果

    此图像中使用的边框阴影效果博客文章 http www adobe com devnet html5 articles css3 regions html似乎嵌入在图像本身中 不是 css3 如何在 imagemagick 中创建它 Edit
  • Instagram 勒克斯效果

    Instagram 最近添加了一个 Lux 按钮 可以对您拍摄的照片进行自动对比 调平 我有一堆图片需要以类似的方式自动调平 使这些图片看起来更好 如果我想在 Imagemagick 中使用批处理命令 需要使用什么 秘密成分 我应该坚持对比
  • 缩小图像尺寸 imagemagick

    我尝试过压缩图像但没有成功 看我的小实验 var results new Dictionary
  • 无法在 Windows 7 上安装 Rmagick 和 Imagemagick

    当我跑步时gem install rmagick 2 13 1 gem从 rmagick 2 13 1 gem 所在的目录中 我收到一个错误 指出它无法构建 gem 本机扩展 下面显示 c Ruby192 bin ruby exe extc

随机推荐

  • 在 LINQ to 对象的语句中

    LINQ to 对象中是否存在与 SQL IN 语句等效的语句 Yes Contains http msdn microsoft com en us library system linq enumerable contains aspx
  • Java 中的 PPMD​​ 压缩?

    有谁知道 PPMD 压缩算法的 Java 实现吗 我还没有找到 Java 实现 但有一个 C 实现http users senet com au mjbone Compression html http users senet com au
  • 如何在 Windows 窗体应用程序中创建全局错误处理程序?

    我认为有一个组件允许创建全局错误处理 例如 当发生不好的事情时 我自己会抛出异常 例如 throw new ArgumentNullException playlist is empty 我怎样才能在全球范围内捕捉到它 您可以通过以下方式完
  • 使用 std::make_shared 抽象类实例化时出错

    我将省略相当多的代码 因为这些是一些相当大的对象 而我的问题实际上只涉及 std make shared 的操作 我在命名空间 SYNC 中有一个名为 D3D11Shader 的对象 这有一个static函数调用 SYNC D3D11Sha
  • Spring、Infinispan 和 JBoss 7 集成

    我正在尝试使用 JBoss 7 Infinispan 缓存作为两个战争部署的基于 spring 的应用程序的通信形式 稍后会详细介绍 我在访问 JBoss 托管缓存管理器时遇到问题 当我使用 DefaultCacheManager cach
  • 如何在 WordPress 上找到我的 php.ini?

    我想增加我的 WordPress 网站上的最大执行时间 我知道我应该编辑 php ini 但似乎找不到它 有小费吗 看到这个问题我真多啊 我所看到的一切都缺乏真正的答案 php ini 应该位于wp admin目录 如果不是只是创建它然后定
  • EntityManager persist() 方法不会将记录插入数据库

    我使用时遇到问题EntityManager persist Object 方法 现在 当我摆脱其他问题时 通过应用程序工作没有异常 但对象没有放入我的数据库中 我的实体类 Entity Table name Chain public cla
  • sails.js 会话 - 记住我的功能

    我一直在尝试使用来实现 Rememberme 功能sails http sailsjs org 我希望会话持续到浏览器关闭为止 但是 如果用户登录时勾选了 Rememberme 复选框 我希望会话持续 30 天 我使用了这里的记住我护照策略
  • 如何使用 JPA 在同一对象上映射父/子关系

    读完这篇文章后JPA映射关系实体parentID https stackoverflow com questions 2743895 jpa map relation entity parentid我尝试将其应用到我的代码中 但这对我不起作
  • Magento 1.9 - 产品未添加到注销用户的购物篮中

    与大多数与 Magento 相关的问题一样 通常需要用头撞墙才能找到解决方案 然而这一次 什么也没有 对于已注销并尝试将商品添加到空购物车的客户 我遇到了一个奇怪的问题 它不适用于某些特定的产品类型 我扩展了购物车控制器以添加对用户输入值的
  • 无需注册 COM 即可与 C# 互操作,可能吗?

    是否可以通过 Dotnet 互操作和 C 使用免注册 COM 如果是这样 如何在 C 项目中添加对 COM 对象的引用 我有一个免费的 ATL COM 服务器 dll 带有嵌入式清单和两个测试客户端 一个是 cpp 另一个是 c cpp 客
  • C# 如何不断向标签框添加值,以便生成的数字不断添加到其中?

    我正在开发一个骰子程序 我们应该有一个 总收入 标签框 其中显示滚子掷骰子时赚取的总金额 如果你掷出 6 你将赚取 600 美元 如果你掷出 5 你将赚取 500 美元 等等 我可以让美元值显示在标签框上 但当我继续滚动时 该数字将被下一个
  • 错误:“jQuery 未定义”

    我用 jQuery 写了一个脚本 它适用于 Firefox 和 GoogleChrome 仅使用 IE 我会返回此错误 jQuery 未定义 jquery ui 1 8 4 custom min js 第 10 行字符 1 这是我的页面的标
  • NuGet Pack - 无法从远程源检索信息

    我正在尝试运行 nuget pack project csproj 但由于项目的目录结构 A B C 项目 它一直说 NuGet Protocol Core Types FatalProtocolException 无法从远程源 A B P
  • 使用 trie 的 Python 拼写检查器

    我正在尝试使用 trie 数据结构实现拼写检查器 我目前有以下大纲Node class Node def init self self next self word marker False def add item self string
  • 将数据从一张纸复制到另一张纸的最后一行

    我正在尝试将数据从一张纸复制到另一张纸的最后一行 我这样做的原因是因为我想将数据合并到已经存在的工作表中并且我已经包含数据 下面是我到目前为止的代码 它只再次复制到另一张纸的 A2 上 为此我应该采取什么方法 Sub Upload Dim
  • 线程安全的保留/释放

    我有一个可以从多个后台线程 可能同时 访问的类 我无法复制该类 因为重新创建它的内容 处理或内存方面 可能会很昂贵 当后台处理仍在进行并访问该属性时 该类的属性也可能被替换 目前我有定期的保留 释放 但似乎情况 至少在 iOS 4 上 这些
  • UITableView - 我可以跨越多行或使用嵌套 UITableView 吗?

    我基本上正在尝试实现以下可滚动布局 并正在寻找一些关于实现它的最佳方法的建议 潜在的解决方案可能是 嵌套 UITableView 我考虑过将所有 A 组件放在父 UITableView 中的单行中 并将行 A1 A2 和 A3 放在子 UI
  • 通过传递纬度和经度打开 Apple 地图

    当用户单击链接时 我尝试在 PhoneGap 应用程序中打开 Apple 地图 Apple文档中的URL方案是这样的http maps apple com maps ll 51 83733 8 3016 如果存在 Apple 地图 则会打开
  • 如何将 dzi 文件转换为多瓦金字塔 tiff 格式

    参考答案 如何将 dzi 深度变焦 文件转换为完整图像 https stackoverflow com questions 53986084 how to convert dzi deep zoom files to full image