👌

CloudFunctionsでsharpを使って画像をリサイズする

2022/11/06に公開

Firebase/GCPで画像をリサイズする目的であればFirebase ExtensionsのResize Imagesや、古き良きImageMagickを使うという選択肢もあるが今回はsharp(libvips)を使う。

リモート画像のURLからリサイズ済webp画像をBufferで返す例。(この例ではHTTPクライアントにaxiosを使っている)


const width = 400
const height = 200

export convert = async (imageUrl: string, timeout = 1000): Promise<Buffer> => {
  const res = await axios.get(imageUrl, {
    timeout: timeout,
    responseType: 'arraybuffer',
  })
  const buf = Buffer.from(res.data)

  return sharp(buf).resize(width, height).webp().toBuffer()
}

References

Discussion