@@ -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