mirror of
https://github.com/TeamPGM/PagerMaid_Plugins_Pyro.git
synced 2024-11-22 01:57:47 +00:00
pic_to_sticker 将你回复的图片转换为贴纸
This commit is contained in:
parent
72c31ef248
commit
b4f3fab72e
60
pic_to_sticker/main.py
Normal file
60
pic_to_sticker/main.py
Normal file
@ -0,0 +1,60 @@
|
||||
from io import BytesIO
|
||||
|
||||
from PIL import Image
|
||||
from math import floor
|
||||
|
||||
from pagermaid.listener import listener
|
||||
from pagermaid.enums import Message, Client
|
||||
from pagermaid.single_utils import safe_remove
|
||||
|
||||
|
||||
async def resize_image(photo):
|
||||
image = Image.open(photo)
|
||||
if (image.width and image.height) < 512:
|
||||
size1 = image.width
|
||||
size2 = image.height
|
||||
if image.width > image.height:
|
||||
scale = 512 / size1
|
||||
size1new = 512
|
||||
size2new = size2 * scale
|
||||
else:
|
||||
scale = 512 / size2
|
||||
size1new = size1 * scale
|
||||
size2new = 512
|
||||
size1new = floor(size1new)
|
||||
size2new = floor(size2new)
|
||||
size_new = (size1new, size2new)
|
||||
image = image.resize(size_new)
|
||||
else:
|
||||
maxsize = (512, 512)
|
||||
image.thumbnail(maxsize)
|
||||
|
||||
return image
|
||||
|
||||
|
||||
@listener(command="pic_to_sticker",
|
||||
description="将你回复的图片转换为贴纸")
|
||||
async def pic_to_sticker(bot: Client, message: Message):
|
||||
reply = message.reply_to_message
|
||||
photo = None
|
||||
if reply and reply.photo:
|
||||
photo = reply
|
||||
elif message.photo:
|
||||
photo = message
|
||||
if not photo:
|
||||
return await message.edit("请回复一张图片")
|
||||
try:
|
||||
photo = await bot.download_media(photo, in_memory=True)
|
||||
message: Message = await message.edit("正在转换...\n███████70%")
|
||||
image = await resize_image(photo)
|
||||
file = BytesIO()
|
||||
file.name = "sticker.webp"
|
||||
image.save(file, "WEBP")
|
||||
file.seek(0)
|
||||
if reply:
|
||||
await reply.reply_sticker(file, quote=True)
|
||||
else:
|
||||
await message.reply_sticker(file, quote=True)
|
||||
except Exception as e:
|
||||
return await message.edit(f"转换失败:{e}")
|
||||
await message.safe_delete()
|
Loading…
Reference in New Issue
Block a user