MiraiForum

    • Register
    • Login
    • Search
    • Popular
    • Recent
    • Unsolved
    • Tags
    • Groups
    • 友情链接

    Petpet - 生成各种奇怪的图片

    插件发布
    25
    108
    3080
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Dituon
      Dituon last edited by Dituon

      Petpet - 生成各种奇怪的图片

      已更新 3.4版本,可自定义 文字 坐标 概率 关键词 等参数


      项目地址

      releases


      图片预览:

      13.gif 12.gif 11.gif 10.gif 9.gif

      8.gif 7.gif 6.gif 5.gif 4.gif

      3.gif 2.gif 1.gif 0.gif


      Petpet

      Mirai version
      GitHub
      GitHub all releases
      GitHub Repo stars
      GitHub release (latest by date)
      GitHub issues
      GitHub closed issues
      GitHub closed pull requests

      一个生成摸摸头GIF的 Mirai 插件,灵感/数据来自 nonebot-plugin-petpet。

      java 编写,未使用任何第三方库 :轻量,高效。

      使用方法

      1. 下载 最新版本

      2. 将插件放入 Mirai/plugins/

      3. 下载 图片素材

      4. 将图片素材放入 Mirai/data/xmmt.dituon.petpet

      5. 使用 戳一戳 有 30% 的概率触发; 或发送 pet @xxx

      pet @xxx 后跟 key 可以返回指定图片 例如 pet @xxx kiss

      启用 keyCommand 后 上述指令可简写为 kiss @xxx

      启用 respondImage 后 可通过发送的图片生成Petpet pet [图片] kiss

      配置文件

      首次运行 Petpet 插件时,会生成 Mirai/config/xmmt.dituon.petpet/Petpet.yml 文件

      content: 
        version: 3.1 #配置文件版本
        command: pet #触发 petpet 的指令
        probability: 30 #使用 戳一戳 的触发概率
        antialias: true #抗锯齿
        disabled: [] #禁用列表
        keyCommand: false #以 key 作为指令头
        commandMustAt: true #必须有At对象
        respondImage: false #使用发送的图片生成 petpet
        respondSelfNudge: false #响应机器人发出的戳一戳
        headless: false #使用headless模式
      

      修改后重启 Mirai 以重新加载

      权限管理

      群主或管理员使用 pet on pet off 以 启用/禁用 插件

      可在配置文件中禁用指定key, 被禁用的key不会随机触发, 但仍可以通过指令使用

      图片预览

      项目地址

      自定义

      在线编辑器

      data.json

      ./data/xmmt.dituon.petpet/ 下的目录名为 key ,插件启动时会遍历 ./data/xmmt.dituon.petpet/$key/data.json

      data.json 标准如下 (以 thump/data.json 为例)

      {
        "type": "GIF", // 图片类型(enum)
        "avatar": [{ //头像(objArr), 参考下文
            "type": "TO",
            "pos": [
              [65, 128, 77, 72], [67, 128, 73, 72], [54, 139, 94, 61], [57, 135, 86, 65]
            ],
            "round": true,
            "avatarOnTop": false
          }],
        "text": [] //文字(objArr), 参考下文
      }
      
      图片类型枚举

      type

      • GIF 动图
      • IMG 静态图片

      坐标

      坐标的基本组成单位是 4长度 int[] 数组

      其中,前两项为 左上角顶点坐标, 后两项为 宽度和高度

      例:
      [65, 128, 77, 72] 即 头像的左上角顶点坐标是 (65,128), 宽度为 77, 高度为 72

      如果是 GIF 类型,坐标应为二维数组,GIF 的每一帧视为单个图像文件

      "pos": [ // pos的元素对应GIF的4帧
          [65, 128, 77, 72], [67, 128, 73, 72], [54, 139, 94, 61], [57, 135, 86, 65]
        ],
      

      如果是IMG类型, 可以使用一维数组

        "pos": [0, 0, 200, 200]
      
      仿射变换/图像变形

      坐标格式枚举posType

      • ZOOM 缩放(见上文)
      • DEFORM 变形

      DEFORM 坐标格式为 [[x1,y1],[x2,y2],[x3,y3],[x4,y4]];
      分别对应图片的[[左下角],[左上角],[右上角],[右下角]]

      目前仿射变换仅支持单帧

      头像

      3.0版本后 提供了更灵活的头像构造方法, 与之前的版本有很大差别

      "avatar": [
          {
            "type": "FROM", //头像类型枚举(enum), 非空
            "pos": [[92, 64, 40, 40], [135, 40, 40, 40], [84, 105, 40, 40]], // 坐标
            "round": true, // 值为true时, 头像裁切为圆形, 默认为false
            "avatarOnTop": true // 值为true时, 头像图层在背景之上, 默认为true
            "angle": 90, // 初始角度
          },
          {
            "type": "TO", 
            "pos": [[65, 128],[60,210],[110,210],[110, 120]],
            "posType": "DEFORM", //图像变形 坐标格式, 默认为ZOOM
            "antialias": true, // 抗锯齿, 对头像单独使用抗锯齿算法, 默认为false
            "rotate": false // 值为true时, GIF类型的头像会旋转, 默认为false
          }
        ]
      
      头像类型枚举

      type

      • FROM 发送者头像
      • TO 接收者头像, 或构造的图片
      • GROUP 群头像
      • BOT 机器人头像

      文字

      如果你想在图片上添加文字,可以编辑 text

      "text": [ // 这是一个数组, 可以添加很多文字
        {
          "text": "Petpet!", // 文字内容
          "color": "#66ccff", // 颜色, 默认为#191919
          "pos": [100, 100], // 坐标, 默认为 [2,14]
          "size": 24 // 字号, 默认为12
        },
        {
          "text": "发送者: $from, 接收者: $to", // 支持变量
          "color": [0,0,0,255], // 颜色可以使用RGB或RGBA的格式
          "pos": [20, 150], // 坐标
          "font": "宋体" // 字体, 默认为黑体
        },
        {
          "text": "$txt1[我]超市$txt2[你]!", // 支持关键词变量
          "pos": [0,200],
          "font":  "./data/xmmt.dituon.petpet/key/微软雅黑.ttf" // 支持路径
        }
        ]
      

      变量

      • $from : 发送者, 会被替换为发送者群名片,如果没有群名片就替换为昵称
      • $to : 接收者, 被戳或At的对象, 发送图片构造时为"你"
      • $group : 群名称
      • $txt(i)[(xxx)] : 文本变量, 可用于生成meme图, i为关键词索引, xxx为默认值; 例: $txt1[我]超市$txt2[你] 指令为 pet [key] 我 你

      需要更多变量请提交 Issue

      常见问题

      戳一戳无法触发?

      检查 Mirai 登录协议, 仅 ANDORID_PHONE 可以收到 戳一戳 消息

      NoClassDefFoundError?

      Mirai 2.11.0 提供了新的 JavaAutoSaveConfig 方法, 请更新Mirai版本至 2.11.0 (不是2.11.0-M1), 或使用本插件 2.0 及以下版本

      Exception in coroutine <unnamed>?

      图片素材应位于 Mirai/data/xmmt.dituon.petpet 目录下, 请检查路径

      文字构造乱码?

      Linux 系统 可能缺少中文字体, 使用 fc-list 列出已安装的字体; Windows 系统 可能是文件编码问题, 更改 data.json 编码 或加入-Dfile.encoding=utf-8 启动项

      Could not initialize class java.awt.Toolkit?

      对于无输入输出设备的服务器 需要启用headless

      分享你的作品

      如果你想分享自定义的 Petpet, 欢迎Pr

      依赖share包二次开发

      • 方式1. 在本项目内二次开发(非mirai插件形式):见xmmt.dituon.example.SimpleUsage
      • 方式2. 在别的项目二次开发:mirai-simplepetpet-plugin

      后话

      如果此插件和您预期的一样正常工作,请给我一个 star 并在此帖下回复

      欢迎提交任何请求

      交流群: 534814022

      1106095212 1 Reply Last reply Reply Quote 4
      • 立于羽下
        立于羽下 last edited by

        这个使用的意思是输入pet之后有30%概率发送一张随机的合成图片,不能指定发送哪个图片吗

        tsudzuki Dituon 3 Replies Last reply Reply Quote 0
        • tsudzuki
          tsudzuki 摸鱼 @立于羽下 last edited by

          @立于羽下 我也觉得()

          1 Reply Last reply Reply Quote 0
          • YoinSama
            YoinSama last edited by

            能支持自定义发送概率吗

            Dituon 2 Replies Last reply Reply Quote 0
            • Dituon
              Dituon @YoinSama last edited by

              @YoinSama 请提交issue,近期更新

              1 Reply Last reply Reply Quote 1
              • Dituon
                Dituon @立于羽下 last edited by

                @立于羽下 是的,欢迎进行二次开发或提交issue

                1 Reply Last reply Reply Quote 0
                • Dituon
                  Dituon @YoinSama last edited by

                  @YoinSama 已更新。

                  1 Reply Last reply Reply Quote 0
                  • Dituon
                    Dituon @立于羽下 last edited by Dituon

                    @立于羽下 @tsudzuki 已更新,使用 1.4 版本

                    1 Reply Last reply Reply Quote 1
                    • Dituon
                      Dituon last edited by Dituon

                      搬运一下 README.md...

                      1 Reply Last reply Reply Quote 0
                      • D
                        dr_chenzs last edited by

                        有没有可能我是懒鬼
                        我只想有自行添加gif背景的功能

                        Dituon 1 Reply Last reply Reply Quote 1
                        • Dituon
                          Dituon @dr_chenzs last edited by

                          @dr_chenzs 使用 sendImage 快速进行二次开发

                          1 Reply Last reply Reply Quote 1
                          • 1106095212
                            1106095212 @Dituon last edited by

                            @Dituon 插件不错,群U很喜欢,下次还会光顾☺️☺️

                            Dituon 1 Reply Last reply Reply Quote 1
                            • X
                              xiaolu last edited by

                              击剑🤺🤺.GIF

                              Dituon 1 Reply Last reply Reply Quote 0
                              • Dituon
                                Dituon @1106095212 last edited by

                                @1106095212 谢谢😘

                                1 Reply Last reply Reply Quote 0
                                • Dituon
                                  Dituon @xiaolu last edited by

                                  @xiaolu 🤺🤺

                                  1 Reply Last reply Reply Quote 0
                                  • 1
                                    157946a last edited by

                                    很不错的功能

                                    Dituon 1 Reply Last reply Reply Quote 0
                                    • BH02
                                      BH02 last edited by BH02

                                      很棒的插件!QQ图片20220529183519.gif

                                      1 Reply Last reply Reply Quote 0
                                      • 豹离SIU
                                        豹离SIU 摸鱼 last edited by

                                        图片素材下载完后似乎找不到安放的目录,jar包塞进plugins后生成了json,似乎除了json和jar包之外没有别的生成的文件夹了。是哪里遗漏了吗?

                                        Dituon 1 Reply Last reply Reply Quote 0
                                        • Dituon
                                          Dituon @豹离SIU last edited by

                                          @豹离SIU 图片目录要自行创建

                                          豹离SIU 1 Reply Last reply Reply Quote 0
                                          • 豹离SIU
                                            豹离SIU 摸鱼 @Dituon last edited by

                                            okok,之前把res丢进data里面搜不出来,现在把res放到mcl文件夹里就好了

                                            Dituon 1 Reply Last reply Reply Quote 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 6
                                            • 1 / 6
                                            • First post
                                              Last post
                                            Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact us