1717from anshitsu .process .remove_alpha import remove_alpha
1818from anshitsu .process .sepia import sepia
1919from anshitsu .process .sharpness import sharpness
20+ from anshitsu .process .create_alpha_mask import create_alpha_mask
2021
2122
2223class Processor :
@@ -36,23 +37,24 @@ class Processor:
3637 )
3738
3839 def __init__ (
39- self ,
40- image : Image ,
41- colorautoadjust : bool = False ,
42- colorstretch : bool = False ,
43- grayscale : bool = False ,
44- line_drawing : bool = False ,
45- invert : bool = False ,
46- tosaka : Optional [float ] = None ,
47- outputrgb : bool = False ,
48- noise : Optional [float ] = None ,
49- color : Optional [float ] = None ,
50- brightness : Optional [float ] = None ,
51- sharpness : Optional [float ] = None ,
52- contrast : Optional [float ] = None ,
53- sepia : bool = False ,
54- cyanotype : bool = False ,
55- posterize : Optional [int ] = None ,
40+ self ,
41+ image : Image ,
42+ colorautoadjust : bool = False ,
43+ colorstretch : bool = False ,
44+ grayscale : bool = False ,
45+ line_drawing : bool = False ,
46+ invert : bool = False ,
47+ tosaka : Optional [float ] = None ,
48+ outputrgb : bool = False ,
49+ noise : Optional [float ] = None ,
50+ color : Optional [float ] = None ,
51+ brightness : Optional [float ] = None ,
52+ sharpness : Optional [float ] = None ,
53+ contrast : Optional [float ] = None ,
54+ sepia : bool = False ,
55+ cyanotype : bool = False ,
56+ posterize : Optional [int ] = None ,
57+ keep_alpha : bool = False ,
5658 ) -> None :
5759 """
5860 __init__ constructor.
@@ -63,11 +65,21 @@ def __init__(
6365 colorstretch (bool, optional): Use colorstretch algorithm. Defaults to False.
6466 grayscale (bool, optional): Convert to grayscale. Defaults to False.
6567 invert (bool, optional): Invert color. Defaults to False.
68+ color (Optional[float], optional): Fix color balance. Defaults to None.
69+ brightness (Optional[float], optional): Fix brightness. Defaults to None.
70+ sharpness (Optional[float], optional): Fix sharpness. Defaults to None.
71+ contrast (Optional[float], optional): Fix contrast. Defaults to None.
6672 tosaka (Optional[float], optional): Use Tosaka mode. Defaults to None.
6773 outputrgb (bool, optional): Outputs a monochrome image in RGB. Defaults to False.
6874 noise (Optional[float], optional): Add Gaussian noise. Defaults to None.
75+ cyanotype (bool, optional): Convert to RGB like cyanotype. Defaults to False.
76+ sepia (bool, optional): Convert to RGB colored by sepia. Defaults to False.
77+ noise (Optional[float], optional): Add Gaussian noise. Defaults to None.
78+ line_drawing (bool, optional): Convert to like line drawing. Defaults to False.
79+ keep_alpha (bool, optional): Keep alpha mask. Defaults to False.
6980 """
7081 self .image = image
82+ self .keep_alpha = keep_alpha
7183 self .line_drawing = line_drawing
7284 self .colorautoadjust = colorautoadjust
7385 self .colorstretch = colorstretch
@@ -87,6 +99,11 @@ def __init__(
8799 self .posterize = posterize
88100
89101 def process (self ) -> Image :
102+ if self .keep_alpha :
103+ alpha = create_alpha_mask (self .image )
104+ else :
105+ alpha = None
106+
90107 self .image = remove_alpha (self .image )
91108
92109 if self .invert :
@@ -131,17 +148,7 @@ def process(self) -> Image:
131148 if self .cyanotype :
132149 self .image = cyanotype (self .image )
133150
134- return self .image
151+ if alpha is not None :
152+ self .image .putalpha (alpha )
135153
136- def __output_rgb (self ) -> Image :
137- """
138- __output_rgb
139-
140- Outputs a monochrome image in RGB.
141-
142- Returns:
143- Image: processed image.
144- """
145- if self .image .mode == "L" :
146- self .image = self .image .convert ("RGB" )
147154 return self .image
0 commit comments