ツタンラーメンの忘備録

プログラミングや精神疾患、ラーメンについて書いていきます。たぶん。

python line bot imagemap 画像送信

pythonでLINE botを作っていますが,
github.com
ここでだいたいわかります.しかし画像の送信とimagemapはサンプルがないので実装してみます.

APIリファレンス


画像送信

from linebot.models import ImageSendMessage
def make_image_message():
    messages = ImageSendMessage(
        original_content_url="https://hogehoge.jpg", #JPEG 最大画像サイズ:240×240 最大ファイルサイズ:1MB(注意:仕様が変わっていた)
        preview_image_url="https://hogehoge-mini.jpg" #JPEG 最大画像サイズ:1024×1024 最大ファイルサイズ:1MB(注意:仕様が変わっていた)
    )
    return messages

これむっちゃ面白いんですけどプレビューとタップして表示される画像別になるんですよ!
注意:画像サイズの制限はもう少し大きく,jpgに限定されない.ただし.preview_image_urlにgifを指定しても,反映されない(正確にはアニメーションgifは動かない)ので注意

これを

messages = make_image_messages()
line_bot_api.reply_message(
    event.reply_token,
    messages)

的にすればリプライできます.


imagemap

画像をボタン化できます.(画像は用意できれば用意します.)
これの何がいいかというと

  • 画像を見れることによる直感的操作
  • 選択肢を増やせる(最大50)
from linebot.models import ImagemapSendMessage, BaseSize, ImagemapAction, URIImagemapAction, MessageImagemapAction, ImagemapArea
def make_imagemap():
    messages = ImagemapSendMessage(
        base_url='https://huhahaha/pikach/kawaii/',
        alt_text='this is an imagemap',
        base_size=BaseSize(width=1040, height=1040),
        actions=[
            URIImagemapAction(
                link_uri='https://example.com/',
                area=ImagemapArea(
                    x=0, y=0, width=520, height=1040
                )
            ),
            MessageImagemapAction(
                text='hello',
                area=ImagemapArea(
                    x=520, y=0, width=520, height=1040
                )
            )
        ]
    )
    return messages

画像の保存の仕方に一癖あってけっこう悩みました.

https://huhahaha/pikach/kawaii/

以下に
幅:240px、300px、460px、700px、1040px
の画像を配置します.(横幅が指定であれば,高さは関係ない.また高さに合わせて,heightも変える)

  • 画像フォーマット:JPEGまたはPNG
  • ファイルサイズ:最大1MB

なのですが,保存した画像の拡張子は**取ります**
(どっかで拡張子指定できるようにすればいいのに…)

qiita.com

参考にした