Node.js将HEIC/HIF文件转换为jpeg(离线)

azpvetkf  于 2023-06-29  发布在  Node.js
关注(0)|答案(1)|浏览(266)

我试图找到一种方法来转换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
任何帮助弄清楚为什么这个库不工作或其他一些库,将工作将是真棒!

0pizxfdo

0pizxfdo1#

我找到了一个目前可以正常工作的库,node包imagemagick
这有点不方便,因为这个包只是一个围绕库的node.js Package 器,而不是一个自包含的包。因此,您必须首先从here安装实际的库。
我认为这些HIF文件的问题可能是它们使用了比heic-convert可以处理的heic标准的新版本。因为这个软件包确实可以处理从我的iPhone上获取的heic文件,但它不能处理从我的索尼a7 IV创建的HIF文件。我不知道如何查看heic版本的文件,但我假设他们使用不同的版本。幸运的是,imagemagick库似乎支持这两种功能。

相关问题