node.js - 一个转换多页 tiff 图像的 node.js 模块
问题描述
是否有任何工具可用于将多页 tiff 文件转换为 JPG、PNG..等?
我正在使用来自 node.js 的模块 sharp 将 tiff 图像转换为我想要的格式。但它似乎无法转换那些压缩了多个页面的单个 tiff 文件(它只转换第一页)
解决方案
任何 node.js 模块都将在下面使用 ImageMagick 或 GraphicsMagick,因此您需要在$PATH
. 如果您使用的是 OSX,请确保您有brew 包管理器,然后运行:
brew install imagemagick
brew install graphicsmagick
现在,您可以安装一个简单的 node.js 模块tiff-to-png :
$ npm install tiff-to-png
然后制作一个简单的脚本,如下所示:
const ConvertTiff = require('tiff-to-png');
const glob = require('glob');
// cwd option sets the current-working-directory
// that tiff-to-png runs from.
let options = {
cwd: '/path/to/rootDir/of/tiffs'
};
let location = '/path/to/output/pictures';
let converter = new ConvertTiff(options);
// for Files
let forFiles = (err, files) => {
if (err) console.log(err);
converter.convertArray(files, location);
};
// glob it.
glob('**/*.tif', options, forFiles);
现在,如果您的多页 tif 文件未正确拆分。安装 imagemagick 和 graphicsmagick 库后,您应该有两个命令:tiffcp
和tiffsplit
.
有时,不正确的压缩会导致您看到的失败。用于tiffcp -c none orig.tif fixed.tif
消除麻烦的压缩。然后运行tiffsplit fixed.tif prefixForSplitFile-
,您应该在多页 tiff 中获得多个文件。
最后,为了转换为 PNG 以外的格式,以及使用 node.js 使用 Image/GraphicsMagick 进行更高级的图像处理,请安装gm模块,它可以从 node.js 运行上述命令。
推荐阅读
- tabulator - 如何从链接格式化程序 url 回调返回而不创建超链接
- sql - db2 - 如何使用 sql 查询名称为句点的库(数据库)?
- javascript - Shiny:如何在 UI 中直接使用 Server 中定义的列表
- angular - 角度秒表管道:检查后表达式已更改。以前的值
- bash - 在 jenkins 管道中找不到 docker 的 ~/.bashrc 中的别名
- apache-spark - 使用 UDF 计算两个向量之间的距离是否效率低下?
- php - Laravel 唯一规则集忽略当前用户 id
- git - 从远程更新(获取+重置)分支A,在获取后没有拉动?
- php - 无法在 Elasticsearch 中创建索引
- git - 如何使用 buildbot 构建每个标签?