大量滤镜转为RGBA以避免问题
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-12-13 18:34:15 +08:00
parent 1861cd4f1a
commit 5de4b72a6b

View File

@ -20,11 +20,17 @@ from konabot.plugins.fx_process.types import SenderInfo, StoredInfo
class ImageFilterImplement: class ImageFilterImplement:
@staticmethod @staticmethod
def apply_blur(image: Image.Image, radius: float = 10) -> Image.Image: def apply_blur(image: Image.Image, radius: float = 10) -> Image.Image:
if image.mode != 'RGBA':
image = image.convert('RGBA')
return image.filter(ImageFilter.GaussianBlur(radius)) return image.filter(ImageFilter.GaussianBlur(radius))
# 马赛克 # 马赛克
@staticmethod @staticmethod
def apply_mosaic(image: Image.Image, pixel_size: int = 10) -> Image.Image: def apply_mosaic(image: Image.Image, pixel_size: int = 10) -> Image.Image:
if image.mode != 'RGBA':
image = image.convert('RGBA')
if pixel_size <= 0: if pixel_size <= 0:
pixel_size = 1 pixel_size = 1
# 缩小图像 # 缩小图像
@ -37,26 +43,38 @@ class ImageFilterImplement:
@staticmethod @staticmethod
def apply_contour(image: Image.Image) -> Image.Image: def apply_contour(image: Image.Image) -> Image.Image:
if image.mode != 'RGBA':
image = image.convert('RGBA')
return image.filter(ImageFilter.CONTOUR) return image.filter(ImageFilter.CONTOUR)
@staticmethod @staticmethod
def apply_sharpen(image: Image.Image) -> Image.Image: def apply_sharpen(image: Image.Image) -> Image.Image:
if image.mode != 'RGBA':
image = image.convert('RGBA')
return image.filter(ImageFilter.SHARPEN) return image.filter(ImageFilter.SHARPEN)
@staticmethod @staticmethod
def apply_edge_enhance(image: Image.Image) -> Image.Image: def apply_edge_enhance(image: Image.Image) -> Image.Image:
if image.mode != 'RGBA':
image = image.convert('RGBA')
return image.filter(ImageFilter.EDGE_ENHANCE) return image.filter(ImageFilter.EDGE_ENHANCE)
@staticmethod @staticmethod
def apply_emboss(image: Image.Image) -> Image.Image: def apply_emboss(image: Image.Image) -> Image.Image:
if image.mode != 'RGBA':
image = image.convert('RGBA')
return image.filter(ImageFilter.EMBOSS) return image.filter(ImageFilter.EMBOSS)
@staticmethod @staticmethod
def apply_find_edges(image: Image.Image) -> Image.Image: def apply_find_edges(image: Image.Image) -> Image.Image:
if image.mode != 'RGBA':
image = image.convert('RGBA')
return image.filter(ImageFilter.FIND_EDGES) return image.filter(ImageFilter.FIND_EDGES)
@staticmethod @staticmethod
def apply_smooth(image: Image.Image) -> Image.Image: def apply_smooth(image: Image.Image) -> Image.Image:
if image.mode != 'RGBA':
image = image.convert('RGBA')
return image.filter(ImageFilter.SMOOTH) return image.filter(ImageFilter.SMOOTH)
# 反色 # 反色
@ -97,18 +115,24 @@ class ImageFilterImplement:
# 对比度 # 对比度
@staticmethod @staticmethod
def apply_contrast(image: Image.Image, factor: float = 1.5) -> Image.Image: def apply_contrast(image: Image.Image, factor: float = 1.5) -> Image.Image:
if image.mode != 'RGBA':
image = image.convert('RGBA')
enhancer = ImageEnhance.Contrast(image) enhancer = ImageEnhance.Contrast(image)
return enhancer.enhance(factor) return enhancer.enhance(factor)
# 亮度 # 亮度
@staticmethod @staticmethod
def apply_brightness(image: Image.Image, factor: float = 1.5) -> Image.Image: def apply_brightness(image: Image.Image, factor: float = 1.5) -> Image.Image:
if image.mode != 'RGBA':
image = image.convert('RGBA')
enhancer = ImageEnhance.Brightness(image) enhancer = ImageEnhance.Brightness(image)
return enhancer.enhance(factor) return enhancer.enhance(factor)
# 色彩 # 色彩
@staticmethod @staticmethod
def apply_color(image: Image.Image, factor: float = 1.5) -> Image.Image: def apply_color(image: Image.Image, factor: float = 1.5) -> Image.Image:
if image.mode != 'RGBA':
image = image.convert('RGBA')
enhancer = ImageEnhance.Color(image) enhancer = ImageEnhance.Color(image)
return enhancer.enhance(factor) return enhancer.enhance(factor)