LINE Botで画像を取り扱う方法
6433 ワード
LINE Botでの画像の取り扱い方法
LINE Botで画像を扱う方法は以下の2種類あります。
- Stream API
- Buffer
今回はLINE Botでのこの2つの取り扱い方法について説明します。
前提条件
- messageId:webhookで取得した
event.message.id
- line:
@line/bot-sdk
で初期化したClient
Stream API
export const getMessageContent = (messageId: string): Promise<Readable> => {
return line.getMessageContent(messageId)
}
返り値はReadableとして扱うことができます。
Buffer
export const getMessageContent = (messageId: string): Promise<Buffer> => {
return new Promise((resolve, reject) =>
line
.getMessageContent(messageId)
.then((stream) => {
const content: Buffer[] = []
stream.on('data', (chunk) => content.push(Buffer.from(chunk)))
stream.on('end', () => resolve(Buffer.concat(content)))
stream.on('error', (err) => {
logger.error(err)
reject('lineGetContent')
})
})
.catch((err) => {
logger.error(err)
reject('lineGetContent')
})
)
}
違い
LINEに送った画像をそのまま他のストレージサーバーにアップロードする場合は、Stream APIで扱うほうがメモリを浪費せずに済みます。
Bufferを扱うのは、Canvasや外部APIを使って画像を加工または解析する際によく使われます。
Author And Source
この問題について(LINE Botで画像を取り扱う方法), 我々は、より多くの情報をここで見つけました https://zenn.dev/hyodoblog/articles/9e93f406340e73著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol