我试图找到一种方法来转换heic/hif文件到jpeg服务器端,使他们可以更兼容其他工具/程序。似乎我能找到的唯一一个node.js库是heic-convert(或者一些相关的库,它们会给予同样的问题)。
当我复制的例子直接从读我的形象,我的工作变成完全绿色后,它被转换。
这是我的测试代码,大部分取自read me。
import fs from 'fs';
import convert from 'heic-convert';
var filePath = '/path/to/my/image.HIF';
test();
async function test() {
var inputBuffer = await fs.promises.readFile(filePath);
var outputBuffer = await convert({
buffer: inputBuffer, // the HEIC file buffer
format: 'JPEG', // output format
quality: 1 // the jpeg compression quality, between 0 and 1
});
await fs.promises.writeFile(filePath.replace(/\.hif$/i, '.jpg'), outputBuffer);
}
这是我正在测试的original image(取自索尼a7四)。
但是当我通过转换器运行它时,它出来的结果就像this。
任何帮助弄清楚为什么这个库不工作或其他一些库,将工作将是真棒!
1条答案
按热度按时间0pizxfdo1#
我找到了一个目前可以正常工作的库,node包imagemagick。
这有点不方便,因为这个包只是一个围绕库的node.js Package 器,而不是一个自包含的包。因此,您必须首先从here安装实际的库。
我认为这些HIF文件的问题可能是它们使用了比heic-convert可以处理的heic标准的新版本。因为这个软件包确实可以处理从我的iPhone上获取的heic文件,但它不能处理从我的索尼a7 IV创建的HIF文件。我不知道如何查看heic版本的文件,但我假设他们使用不同的版本。幸运的是,imagemagick库似乎支持这两种功能。