From 48c719bc33de3dd2409551487f4059e35f5c5d85 Mon Sep 17 00:00:00 2001 From: MixBadGun <1059129006@qq.com> Date: Tue, 30 Sep 2025 15:13:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A8=E6=96=B0=E9=AA=B0=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- konabot/plugins/roll_dice/__init__.py | 21 +- konabot/plugins/roll_dice/assets/stick.png | Bin 0 -> 81731 bytes konabot/plugins/roll_dice/roll_dice.py | 216 ++++++++++++++++++++- konabot/plugins/roll_dice/roll_number.py | 18 ++ 4 files changed, 240 insertions(+), 15 deletions(-) create mode 100644 konabot/plugins/roll_dice/assets/stick.png diff --git a/konabot/plugins/roll_dice/__init__.py b/konabot/plugins/roll_dice/__init__.py index ea6a9c1..9e0e366 100644 --- a/konabot/plugins/roll_dice/__init__.py +++ b/konabot/plugins/roll_dice/__init__.py @@ -1,11 +1,11 @@ -from typing import Optional +from typing import Optional, Union from nonebot.adapters import Event as BaseEvent from nonebot.adapters.console.event import MessageEvent as ConsoleMessageEvent from nonebot.adapters.discord.event import MessageEvent as DiscordMessageEvent from nonebot_plugin_alconna import Alconna, Args, UniMessage, on_alconna from konabot.plugins.roll_dice.roll_dice import generate_dice_image -from konabot.plugins.roll_dice.roll_number import get_random_number, roll_number +from konabot.plugins.roll_dice.roll_number import get_random_number, get_random_number_string, roll_number evt = on_alconna(Alconna( "摇数字" @@ -22,21 +22,26 @@ async def _(event: BaseEvent): evt = on_alconna(Alconna( "摇骰子", - Args["f1?", int]["f2?", int] + Args["f1?", str]["f2?", str] ), use_cmd_start=True, use_cmd_sep=False, skip_for_unmatch=True) @evt.handle() -async def _(event: BaseEvent, f1: Optional[int] = None, f2: Optional[int] = None): +async def _(event: BaseEvent, f1: Optional[str] = None, f2: Optional[str] = None): # if isinstance(event, DiscordMessageEvent): # await evt.send(await UniMessage().text("```\n" + roll_dice() + "\n```").export()) # elif isinstance(event, ConsoleMessageEvent): - number = 0 + number = "" if(f1 is not None and f2 is not None): - number = get_random_number(f1, f2) + number = get_random_number_string(f1, f2) elif f1 is not None: - number = get_random_number(1, f1) + if(float(f1) > 1): + number = get_random_number_string("1", f1) + elif (float(f1) > 0): + number = get_random_number_string("0", f1) + else: + number = get_random_number_string(f1, "0") else: - number = get_random_number() + number = get_random_number_string() await evt.send(await UniMessage().image(raw=await generate_dice_image(number)).export()) # else: # await evt.send(await UniMessage().text(roll_dice(wide=True)).export()) diff --git a/konabot/plugins/roll_dice/assets/stick.png b/konabot/plugins/roll_dice/assets/stick.png new file mode 100644 index 0000000000000000000000000000000000000000..a518d05f89d5fc7282de7208224d04ccd59b504f GIT binary patch literal 81731 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 literal 0 HcmV?d00001 diff --git a/konabot/plugins/roll_dice/roll_dice.py b/konabot/plugins/roll_dice/roll_dice.py index ce736ed..b4cc57b 100644 --- a/konabot/plugins/roll_dice/roll_dice.py +++ b/konabot/plugins/roll_dice/roll_dice.py @@ -158,26 +158,206 @@ def precise_blend_with_perspective(background, foreground, corners): return result -async def generate_dice_image(number: int) -> BytesIO: +def draw_line_bresenham(image, x0, y0, x1, y1, color): + """使用Bresenham算法画线,避免间隙""" + dx = abs(x1 - x0) + dy = abs(y1 - y0) + sx = 1 if x0 < x1 else -1 + sy = 1 if y0 < y1 else -1 + err = dx - dy + + while True: + if 0 <= x0 < image.shape[1] and 0 <= y0 < image.shape[0]: + image[y0, x0] = color + + if x0 == x1 and y0 == y1: + break + + e2 = 2 * err + if e2 > -dy: + err -= dy + x0 += sx + if e2 < dx: + err += dx + y0 += sy + +def slice_and_stretch(image, slice_lines, direction): + ''' + image: 图像 + slice_lines: 切割线(两个点的列表),一般是倾斜45度的直线 + direction: 移动方向向量(二元数组) + ''' + # 获取图片的尺寸 + height, width = image.shape[:2] + # 创建一个由移动方向扩充后,更大的图片 + new_width = int(width + abs(direction[0])) + new_height = int(height + abs(direction[1])) + new_image = np.zeros((new_height, new_width, 4), dtype=image.dtype) + # 先把图片放在新图的和方向相反的一侧 + offset_x = int(abs(min(0, direction[0]))) + offset_y = int(abs(min(0, direction[1]))) + new_image[offset_y:offset_y+height, offset_x:offset_x+width] = image + # 切割线也跟着偏移 + slice_lines = [(x + offset_x, y + offset_y) for (x, y) in slice_lines] + # 复制切割线经过的像素,沿着方向移动,实现类似拖尾的效果 + apply_trail_effect_vectorized(new_image, slice_lines, direction) + apply_stroke_vectorized(new_image, slice_lines, direction) + + + return new_image, offset_x, offset_y + +def apply_trail_effect_vectorized(new_image, slice_lines, direction): + """向量化实现拖尾效果""" + height, width = new_image.shape[:2] + + # 创建坐标网格 + y_coords, x_coords = np.mgrid[0:height, 0:width] + + # 向量化计算点到直线的距离 + line_vec = np.array([slice_lines[1][0] - slice_lines[0][0], + slice_lines[1][1] - slice_lines[0][1]]) + point_vecs = np.stack([x_coords - slice_lines[0][0], + y_coords - slice_lines[0][1]], axis=-1) + + # 计算叉积(有向距离) + cross_products = (line_vec[0] * point_vecs[:, :, 1] - + line_vec[1] * point_vecs[:, :, 0]) + + # 选择直线右侧的像素 (d1 > 0) + mask = cross_products > 0 + + # 计算目标位置 + target_x = (x_coords + direction[0]).astype(int) + target_y = (y_coords + direction[1]).astype(int) + + # 创建有效位置掩码 + valid_mask = mask & (target_x >= 0) & (target_x < width) & \ + (target_y >= 0) & (target_y < height) + + # 批量复制像素 + new_image[target_y[valid_mask], target_x[valid_mask]] = \ + new_image[y_coords[valid_mask], x_coords[valid_mask]] + +def apply_stroke_vectorized(new_image, slice_lines, direction): + """使用向量化操作优化笔画效果""" + height, width = new_image.shape[:2] + + # 1. 找到所有非透明像素 + non_transparent = np.where(new_image[:, :, 3] > 0) + if len(non_transparent[0]) == 0: + return + + y_coords, x_coords = non_transparent + + # 2. 向量化计算点到直线的距离 + line_vec = np.array([slice_lines[1][0] - slice_lines[0][0], + slice_lines[1][1] - slice_lines[0][1]]) + point_vecs = np.column_stack([x_coords - slice_lines[0][0], + y_coords - slice_lines[0][1]]) + + # 计算叉积(距离) + cross_products = (line_vec[0] * point_vecs[:, 1] - + line_vec[1] * point_vecs[:, 0]) + + # 3. 选择靠近直线的像素 + mask = np.abs(cross_products) < 1.0 + selected_y = y_coords[mask] + selected_x = x_coords[mask] + selected_pixels = new_image[selected_y, selected_x] + + if len(selected_x) == 0: + return + + # 4. 预计算采样点 + length = np.sqrt(direction[0]**2 + direction[1]**2) + if length == 0: + return + + # 创建采样偏移 + dx_dy = np.array([(dx, dy) for dx in [-0.5, 0, 0.5] + for dy in [-0.5, 0, 0.5]]) + + # 5. 批量计算目标位置 + steps = max(1, int(length * 2)) + alpha = 0.7 + + for k in range(1, steps + 1): + # 对所有选中的像素批量计算新位置 + scale = k / steps + + # 为每个像素和每个采样点计算目标位置 + for dx, dy in dx_dy: + target_x = np.round(selected_x + dx + direction[0] * scale).astype(int) + target_y = np.round(selected_y + dy + direction[1] * scale).astype(int) + + # 创建有效位置掩码 + valid_mask = (target_x >= 0) & (target_x < width) & \ + (target_y >= 0) & (target_y < height) + + if np.any(valid_mask): + valid_target_x = target_x[valid_mask] + valid_target_y = target_y[valid_mask] + valid_source_idx = np.where(valid_mask)[0] + + # 批量混合像素 + source_pixels = selected_pixels[valid_source_idx] + target_pixels = new_image[valid_target_y, valid_target_x] + + new_image[valid_target_y, valid_target_x] = ( + alpha * source_pixels + (1 - alpha) * target_pixels + ) + +async def generate_dice_image(number: str) -> BytesIO: # 将文本转换为带透明背景的图像 - text = str(number) + text = number + + # 如果文本太长,直接返回金箍棒 + if(len(text) > 50): + output = BytesIO() + push_image = Image.open(ASSETS / "stick.png") + push_image.save(output,format='PNG') + output.seek(0) + return output + text_image = text_to_transparent_image( text, font_size=60, text_color=(0, 0, 0) # 黑色文字 ) + + # 获取长宽比 + height, width = text_image.shape[:2] + aspect_ratio = width / height + + # 根据长宽比设置拉伸系数 + stretch_k = 1 + if aspect_ratio > 1: + stretch_k = aspect_ratio + + # 骰子的方向 + up_direction = (51 - 16, 5 - 30) # 右上角点 - 左上角点 + + move_distance = (up_direction[0] * (stretch_k - 1), up_direction[1] * (stretch_k - 1)) + # 加载背景图像,保留透明通道 + background = cv2.imread(ASSETS / "template.png", cv2.IMREAD_UNCHANGED) + + height, width = background.shape[:2] + + background, offset_x, offset_y = slice_and_stretch(background, + [(10,10),(0,0)], + move_distance) + # 定义3D变换的四个角点(透视效果) # 顺序: [左上, 右上, 右下, 左下] corners = np.array([ [16, 30], # 左上 - [51, 5], # 右上(上移,创建透视) - [88, 33], # 右下 + [51 + move_distance[0], 5 + move_distance[1]], # 右上(上移,创建透视) + [88 + move_distance[0], 33 + move_distance[1]], # 右下 [49, 62] # 左下(下移) ], dtype=np.float32) - - # 加载背景图像,保留透明通道 - background = cv2.imread(ASSETS / "template.png", cv2.IMREAD_UNCHANGED) + corners[:, 0] += offset_x + corners[:, 1] += offset_y # 对文本图像进行3D变换(保持透明通道) @@ -192,6 +372,26 @@ async def generate_dice_image(number: int) -> BytesIO: images = [Image.open(ASSETS / f"{i}.png") for i in range(1, 12)] images.append(pil_final) frame_durations = [100] * (len(images) - 1) + [100000] + # 将导入的图像尺寸扩展为和 pil_final 相同的大小,随帧数进行扩展,然后不放大的情况下放在最中间 + if(aspect_ratio > 1): + target_size = pil_final.size + for i in range(len(images) - 1): + k = i / (len(images) - 1) + now_distance = (move_distance[0] * k, move_distance[1] * k) + img = np.array(images[i]) + img, _, _ = slice_and_stretch(img, + [(10,10),(0,0)], + now_distance) + # 只扩展边界,图像本身不放大 + img_width, img_height = img.shape[1], img.shape[0] + new_img = Image.new("RGBA", target_size, (0, 0, 0, 0)) + this_offset_x = (target_size[0] - img_width) // 2 + this_offset_y = (target_size[1] - img_height) // 2 + # new_img.paste(img, (this_offset_x, this_offset_y)) + new_img.paste(Image.fromarray(img), (this_offset_x, this_offset_y)) + images[i] = new_img + + # 保存为BytesIO对象 output = BytesIO() images[0].save(output, @@ -200,4 +400,6 @@ async def generate_dice_image(number: int) -> BytesIO: duration=frame_durations, format='GIF', loop=1) + output.seek(0) + # pil_final.save(output, format='PNG') return output \ No newline at end of file diff --git a/konabot/plugins/roll_dice/roll_number.py b/konabot/plugins/roll_dice/roll_number.py index 6568926..75cb645 100644 --- a/konabot/plugins/roll_dice/roll_number.py +++ b/konabot/plugins/roll_dice/roll_number.py @@ -42,6 +42,24 @@ def get_random_number(min: int = 1, max: int = 6) -> int: import random return random.randint(min, max) +def get_random_number_string(min_value: str = "1", max_value: str = "6") -> str: + import random + + # 先判断二者是不是整数 + if (float(min_value).is_integer() + and float(max_value).is_integer() + and "." not in min_value + and "." not in max_value): + return str(random.randint(int(float(min_value)), int(float(max_value)))) + + # 根据传入小数的位数,决定保留几位小数 + if "." in str(min_value) or "." in str(max_value): + decimal_places = max(len(str(min_value).split(".")[1]) if "." in str(min_value) else 0, + len(str(max_value).split(".")[1]) if "." in str(max_value) else 0) + return str(round(random.uniform(float(min_value), float(max_value)), decimal_places)) + + # 如果没有小数点,很可能二者都是指数表示或均为 inf,直接返回随机小数 + return str(random.uniform(float(min_value), float(max_value))) def roll_number(wide: bool = False) -> str: raw = number_arts[get_random_number()] if wide: