forked from mttu-developers/konabot
阴影透明度、颜色读取修复
This commit is contained in:
@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user