返回提交历史
Modified
g4f/image.py
+12
-6
XFEstudio/gpt4free
Upload transparency image
981d83da
代码差异
1 个文件
+12
-6
@@ -20,23 +20,23 @@ def to_image(image: ImageType, is_svg: bool = False) -> Image.Image:
20
20
try:
21
21
import cairosvg
22
22
except ImportError:
23
raise RuntimeError('Install "cairosvg" package for open svg images')
23
raise RuntimeError('Install "cairosvg" package for svg images')
24
24
if not isinstance(image, bytes):
25
25
image = image.read()
26
26
buffer = BytesIO()
27
27
cairosvg.svg2png(image, write_to=buffer)
28
image = Image.open(buffer)
28
return Image.open(buffer)
29
29
if isinstance(image, str):
30
30
is_data_uri_an_image(image)
31
31
image = extract_data_uri(image)
32
32
if isinstance(image, bytes):
33
33
is_accepted_format(image)
34
image = Image.open(BytesIO(image))
34
return Image.open(BytesIO(image))
35
35
elif not isinstance(image, Image.Image):
36
36
image = Image.open(image)
37
37
copy = image.copy()
38
38
copy.format = image.format
39
image = copy
39
return copy
40
40
return image
41
41
42
42
def is_allowed_extension(filename: str) -> bool:
@@ -138,6 +138,7 @@ def process_image(img: Image.Image, new_width: int, new_height: int) -> Image.Im
138
138
Returns:
139
139
Image.Image: The processed image.
140
140
"""
141
# Fix orientation
141
142
orientation = get_orientation(img)
142
143
if orientation:
143
144
if orientation > 4:
@@ -148,7 +149,14 @@ def process_image(img: Image.Image, new_width: int, new_height: int) -> Image.Im
148
149
img = img.transpose(Image.ROTATE_270)
149
150
if orientation in [7, 8]:
150
151
img = img.transpose(Image.ROTATE_90)
152
# Resize image
151
153
img.thumbnail((new_width, new_height))
154
# Remove transparency
155
if img.mode != "RGB":
156
img.load()
157
white = Image.new('RGB', img.size, (255, 255, 255))
158
white.paste(img, mask=img.split()[3])
159
return white
152
160
return img
153
161
154
162
def to_base64(image: Image.Image, compression_rate: float) -> str:
@@ -163,8 +171,6 @@ def to_base64(image: Image.Image, compression_rate: float) -> str:
163
171
str: The base64-encoded image.
164
172
"""
165
173
output_buffer = BytesIO()
166
if image.mode != "RGB":
167
image = image.convert('RGB')
168
174
image.save(output_buffer, format="JPEG", quality=int(compression_rate * 100))
169
175
return base64.b64encode(output_buffer.getvalue()).decode()
170
176