gpt4 book ai didi

javascript - 使用 sharp node.js 保留旋转元数据

转载 作者:行者123 更新时间:2023-12-05 08:38:34 24 4
gpt4 key购买 nike

我正在开发一个使用 sharp 的应用程序用于处理照片。当前,当我们使用 sharp resize 和 toBuffer 调整大小然后写入缓冲图像时,默认情况下它们两者都会删除 EXIF 数据。我们想要删除除orientation(如果存在)之外的所有元数据。

我已经阅读了 sharp 的文档,withMetadata 似乎是实现我想要的目标的候选者,问题是 withMetadata 保留了所有元数据,而我只想要原始图像的方向

原来的代码行是

等待 this.sharpInstance.resize(maxDimension, maxDimension).max().toBuffer()

我想我想要的是这样的

等待 this.sharpInstance.withMetadata().resize(maxDimension, maxDimension).max().withMetadata().toBuffer()

但仅针对方向元数据。

如果能帮我解决这个问题,我将不胜感激。非常感谢!

最佳答案

你试过 await this.sharpInstance.resize(maxDimension, maxDimension).max().withMetadata().toBuffer() as Sharp docs关于 withMetadata

编辑:

我明白了。所以对于withMetadata,首先我们需要保存方向元数据,然后分配给输出缓冲区:

// First, save the orientation for later use
const { orientation } = await this.sharpInstance.metadata();

// Then output to Buffer without metadata
// then create another Sharp instance
// from output Buffer which doesn't have metadata
// and assign saved orientation along with it
sharp(this.sharpInstance.toBuffer())
.withMetadata({ orientation }).toBuffer();

关于javascript - 使用 sharp node.js 保留旋转元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62473616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com