簡體   English   中英

使用銳利的 node.js 保留旋轉元數據

[英]Keep rotation metadata with sharp node.js

我正在開發一個使用Sharp處理照片的應用程序。 目前,當我們調整大小然后寫入緩沖圖像時,使用銳利的調整大小和 toBuffer,默認情況下,它們兩者都會擦除 EXIF 數據。 我們要刪除除方向(如果存在)之外的所有元數據。

我已經閱讀了夏普的文檔, withMetadata 似乎是實現我想要的目標的候選人,問題是 withMetadata 保留了所有元數據,我只想要原始圖像的方向

原始代碼行是

await this.sharpInstance.resize(maxDimension, maxDimension).max().toBuffer()

我認為我想要的是

await this.sharpInstance.withMetadata().resize(maxDimension, maxDimension).max().withMetadata().toBuffer()

但僅適用於方向元數據。

我真的很感激一些幫助來解決這個問題。 非常感謝!

您是否嘗試過await this.sharpInstance.resize(maxDimension, maxDimension).max().withMetadata().toBuffer()作為關於withMetadata的夏普文檔

編輯:

收到。 因此與withMetadata ,首先我們需要保存方向元數據,然后稍后分配給 output 緩沖區:

// 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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM