👌
CloudFunctionsでsharpを使って画像をリサイズする
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()
}
Discussion