Skip to content

Commit 8e11d00

Browse files
Fix image conversion state handling across formats
Signed-off-by: Emmanuel Ferdman <[email protected]>
1 parent 0e6d3e4 commit 8e11d00

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

fastchat/serve/vision/image.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,28 +26,30 @@ def convert_image_to_base64(self):
2626
from PIL import Image
2727
import requests
2828

29+
image_bytes = BytesIO()
30+
2931
# Load image if it has not been loaded in yet
3032
if self.image_format == ImageFormat.URL:
31-
response = requests.get(image)
33+
response = requests.get(self.url)
3234
image = Image.open(BytesIO(response.content)).convert("RGBA")
33-
image_bytes = BytesIO()
34-
image.save(image_bytes, format="PNG")
3535
elif self.image_format == ImageFormat.LOCAL_FILEPATH:
3636
image = Image.open(self.url).convert("RGBA")
37-
image_bytes = BytesIO()
38-
image.save(image_bytes, format="PNG")
3937
elif self.image_format == ImageFormat.BYTES:
40-
image_bytes = image
38+
image_data = base64.b64decode(self.base64_str)
39+
image = Image.open(BytesIO(image_data)).convert("RGBA")
40+
else:
41+
raise ValueError(f"Unsupported image format: {self.image_format}")
4142

42-
img_b64_str = base64.b64encode(image_bytes).decode()
43+
image.save(image_bytes, format="PNG")
44+
img_b64_str = base64.b64encode(image_bytes.getvalue()).decode()
4345

4446
return img_b64_str
4547

4648
def to_openai_image_format(self):
4749
if self.image_format == ImageFormat.URL: # input is a url
4850
return self.url
4951
elif self.image_format == ImageFormat.LOCAL_FILEPATH: # input is a local image
50-
self.base64_str = self.convert_image_to_base64(self.url)
52+
self.base64_str = self.convert_image_to_base64()
5153
return f"data:image/{self.filetype};base64,{self.base64_str}"
5254
elif self.image_format == ImageFormat.BYTES:
5355
return f"data:image/{self.filetype};base64,{self.base64_str}"

0 commit comments

Comments
 (0)