nonebot2——表情包生成插件

代码 代码 1441 人阅读 | 0 人回复

<
文章目次

  


媒介

基于PIL,对已存有的表情包范例举办笔墨增加。需求下载包pillow。
经由过程对已定义的表情包模板,正在群聊及第止表情包天生,插件下载正在总结一栏。


1、导进

  1. from PIL import Image, ImageDraw, ImageFont
  2. import urllib.parse
复造代码
2、结果

214944kakrkwakzw64rkk6.jpg


3、代码

1、图片天生


  1. # 界说一个函数,从nonebot2机械人上获得两个疑息,一个keys,一个text。keys为图片心情包范例,因为效劳器上利用中文会堕落,能够接纳urllib.parse.quote(keys)停止转化,包管途径里的图片称号取keys转化后连结分歧。text为您所要界说的笔墨。
  2. # 留意,需求成立文件夹存储图片模板
  3. def get_express_img(keys, text):
  4.     keys = urllib.parse.quote(keys)
  5.     path = f&#39;/home/xiaochen/database/image/{keys}.jpg&#39;
  6.     im = Image.open(path)
  7.     w, h = im.size
  8.     # 导进笔墨字体,前面计较笔墨巨细
  9.     font = ImageFont.truetype(f&#39;/home/xiaochen/database/Fronts/msyh.ttc&#39;, 25)  # 末端
  10.     # 计较利用该字体占有的空间
  11.     # 返回一个 tuple (width, height)
  12.     # 别离代表那止字占有的宽战下
  13.     t_w, t_h = font.getsize(text)
  14.     # print(t_w, t_h)
  15.     text_size = (w, t_h + 20)
  16.     bg = Image.new(&#39;RGB&#39;, text_size, color=&#39;white&#39;)
  17.     draw = ImageDraw.Draw(bg)
  18.     text_coordinate = ((w - t_w) / 2, 10)
  19.     draw.text(text_coordinate, text, (0, 0, 0), font=font)
  20.     f_size = (w, h + t_h)
  21.     f = Image.new(&#39;RGB&#39;, f_size, color=&#39;white&#39;)
  22.     f.paste(im, (0, 0))
  23.     f.paste(bg, (0, (h - t_h)))
  24.     # 那里能够保留您的心情包天生,能够采纳工夫去定名天生文件,大概事前界说天生的图片。
  25.     # 引进工夫辨别文件名
  26.     # x = time.localtime(time.time())
  27.     # y = time.strftime(&#39;%Y%m%d%H%M%S&#39;, x)
  28.     # img_path = f&#39;{os.getcwd()}/src/plugins/make_express/database/image_express/{keys}{y}.jpg&#39;  
  29.     out_path = f&#39;/home/xiaochen/database/image_express/output.jpg&#39;
  30.     f.save(str(out_path))
复造代码
2、图片模板天生
  1. from PIL import Image,ImageDraw,ImageFont
  2. # 图片天生
  3. if __name__ == &#39;__main__&#39;:
  4.     im = Image.open("F:/image/xiongmaoA.jpg")  #340*252
  5.     w, h = im.size
  6.     print(w,h)
  7.     jgz = Image.open("F:/image/xiongmaoA1.jpg")  #135*130
  8.     a, b = jgz.size
  9.     print(a,b)
  10.     #z暗示阁下像素,w-a暗示从左到左的地位,0暗示顶格地位
  11.     x = a+10
  12.     y = b+10
  13.     z = x+a
  14.     g= y+b
  15.     z=w-a
  16.     r=h-b
  17.     #(0,0,a,b)
  18.     im1=im.paste(jgz,(z,0))
  19.     im.show()
  20.     im.save("F:/image/aoqi1.jpg")
复造代码

3、nonebot2代码
[code]expression = on_command(&#39;天生表情&#39;)@expression.handle()async def handle_first_receive(bot: Bot, event: Event, state: T_State):    args = str(event.get_message()).strip()    if args:        state["expression"] = args@expression.got("expression", prompt="天生表情包范例及语句(比方:奥偶1/给我爬)?")async def handle_city(bot: Bot, event: Event, state: T_State):    msg = state["expression"]    s = str.split(msg, "/")    if str(len(s)) != "2":        await expression.finish("输进格局有误,若要天生表情请参照格局Ov
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复 关闭延时

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则