Refactor:Improve BytesIO usage for image2base64 (#9997)

### What problem does this PR solve?

Improve BytesIO usage for image2base64

### Type of change

- [x] Refactoring
This commit is contained in:
Stephen Hu
2025-09-10 15:55:33 +08:00
committed by GitHub
parent 41cdba19ba
commit 127af4e45c

View File

@ -124,17 +124,19 @@ class Base(ABC):
mime = "image/jpeg"
b64 = base64.b64encode(data).decode("utf-8")
return f"data:{mime};base64,{b64}"
buffered = BytesIO()
fmt = "JPEG"
try:
image.save(buffered, format="JPEG")
except Exception:
buffered = BytesIO() # reset buffer before saving PNG
image.save(buffered, format="PNG")
fmt = "PNG"
data = buffered.getvalue()
b64 = base64.b64encode(data).decode("utf-8")
mime = f"image/{fmt.lower()}"
with BytesIO() as buffered:
fmt = "JPEG"
try:
image.save(buffered, format="JPEG")
except Exception:
# reset buffer before saving PNG
buffered.seek(0)
buffered.truncate()
image.save(buffered, format="PNG")
fmt = "PNG"
data = buffered.getvalue()
b64 = base64.b64encode(data).decode("utf-8")
mime = f"image/{fmt.lower()}"
return f"data:{mime};base64,{b64}"
def prompt(self, b64):