web-dev-qa-db-ja.com

オプションの「含める」を使って、画像をシャープにサイズ変更する方法は、元の寸法のアスペクト比を保持しますか?

私は750pxの画像で1000pxを持っています。

サイズを変更するためにlovell/sharpを使います:

await sharp(image)
    .resize({
        fit: sharp.fit.contain,
        width: 800,
        height: 800
    })
    .jpeg({ quality: 80 })
    .toBuffer()
 _

これにより、オリジナルのイメージがその領域内に800px×800pxの新しいイメージが発生します。

私が本当に好きなのは、600pxで800pxの最終的なイメージを持つことです。イメージのサイズを変更してアスペクト比を維持するためのIOW。

幅のみを指定することでこれを行うことができることを実感します。ただし、特定の高さを超える画像を作成しないように、サイズ変更されたイメージを含めるには、バウンディングボックスを入れることは便利です。

さまざまな設定でこれをシャープで行うことができますか?

4
trav

Fitプロパティに文字列を渡します。

    let resizedPhoto
    await sharp(photoBuffer)
      .resize({ width: 1200, height: 900, fit: 'fill' })
      .toBuffer()
      .then((data) => {
        resizedPhoto = data
      })
      .catch((err) => {})
 _
0
Premo89