XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 1
返回提交历史

XFEstudio/gpt4free

Upload transparency image

981d83da
Heiner Lohaus <hlohaus@users.noreply.github.com>
提交于

代码差异

1 个文件 +12 -6
Modified g4f/image.py +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