阴影透明度、颜色读取修复

This commit is contained in:
2025-12-13 20:35:13 +08:00
parent 5e01e086f2
commit 605407549b

View File

@ -4,6 +4,7 @@ from PIL import ImageEnhance
from PIL import ImageChops from PIL import ImageChops
from PIL import ImageOps from PIL import ImageOps
import cv2 import cv2
from nonebot import logger
from konabot.common.path import FONTS_PATH from konabot.common.path import FONTS_PATH
from konabot.plugins.fx_process.color_handle import ColorHandle from konabot.plugins.fx_process.color_handle import ColorHandle
@ -625,20 +626,20 @@ class ImageFilterImplement:
y_offset: int = 10, y_offset: int = 10,
blur: float = 10, blur: float = 10,
opacity: float = 0.5, opacity: float = 0.5,
shadow_color = "black") -> Image.Image: shadow_color: str = "black") -> Image.Image:
if image.mode != 'RGBA': if image.mode != 'RGBA':
image = image.convert('RGBA') image = image.convert('RGBA')
offset = (-x_offset, -y_offset) offset = (-x_offset, -y_offset)
# 创建阴影图层 # 创建阴影图层
shadow_rgb = ColorHandle.parse_color(shadow_color) shadow_rgb = ColorHandle.parse_color(shadow_color)
logger.debug(f"Shadow color RGB: {shadow_rgb}")
shadow = Image.new('RGBA', image.size, (0, 0, 0, 0)) shadow = Image.new('RGBA', image.size, (0, 0, 0, 0))
shadow_draw = ImageDraw.Draw(shadow) shadow_draw = ImageDraw.Draw(shadow)
shadow_draw.rectangle( # 填充阴影颜色
[0, 0, image.size[0], image.size[1]], shadow_draw.rectangle([(0, 0), image.size], fill=(shadow_rgb[0], shadow_rgb[1], shadow_rgb[2], 255))
fill=(shadow_rgb[0], shadow_rgb[1], shadow_rgb[2], int(255 * opacity))
)
# 应用遮罩 # 应用遮罩
shadow.putalpha(image.split()[-1]) alpha = image.split()[-1].point(lambda p: p * opacity)
shadow.putalpha(alpha)
# 移动 # 移动
shadow = shadow.transform( shadow = shadow.transform(
shadow.size, shadow.size,