Skip to content

Commit fadccf5

Browse files
committed
perf(invoke_ai_web_server): encode intermediate result previews as jpeg
For size savings of about 80%, and jpeg encoding is still plenty fast.
1 parent c22d529 commit fadccf5

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

invokeai/backend/invoke_ai_web_server.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@
77
import os
88
import shutil
99
import traceback
10+
from pathlib import Path
1011
from threading import Event
1112
from uuid import uuid4
1213

1314
import eventlet
14-
from pathlib import Path
15+
import invokeai.frontend.dist as frontend
1516
from PIL import Image
1617
from PIL.Image import Image as ImageType
18+
from compel.prompt_parser import Blend
1719
from flask import Flask, redirect, send_from_directory, request, make_response
1820
from flask_socketio import SocketIO
1921
from werkzeug.utils import secure_filename
@@ -22,18 +24,15 @@
2224
get_canvas_generation_mode,
2325
)
2426
from invokeai.backend.modules.parameters import parameters_to_command
25-
import invokeai.frontend.dist as frontend
2627
from ldm.generate import Generate
2728
from ldm.invoke.args import Args, APP_ID, APP_VERSION, calculate_init_img_hash
28-
from ldm.invoke.conditioning import get_tokens_for_prompt_object, get_prompt_structure, split_weighted_subprompts, \
29-
get_tokenizer
29+
from ldm.invoke.conditioning import get_tokens_for_prompt_object, get_prompt_structure, get_tokenizer
3030
from ldm.invoke.generator.diffusers_pipeline import PipelineIntermediateState
3131
from ldm.invoke.generator.inpaint import infill_methods
3232
from ldm.invoke.globals import Globals, global_converted_ckpts_dir
33-
from ldm.invoke.pngwriter import PngWriter, retrieve_metadata
34-
from compel.prompt_parser import Blend
3533
from ldm.invoke.globals import global_models_dir
3634
from ldm.invoke.merge_diffusers import merge_diffusion_models
35+
from ldm.invoke.pngwriter import PngWriter, retrieve_metadata
3736

3837
# Loading Arguments
3938
opt = Args()
@@ -1063,7 +1062,7 @@ def image_progress(sample, step):
10631062
(width, height) = image.size
10641063
width *= 8
10651064
height *= 8
1066-
img_base64 = image_to_dataURL(image)
1065+
img_base64 = image_to_dataURL(image, image_format="JPEG")
10671066
self.socketio.emit(
10681067
"intermediateResult",
10691068
{
@@ -1724,10 +1723,11 @@ def dataURL_to_image(dataURL: str) -> ImageType:
17241723
"""
17251724

17261725

1727-
def image_to_dataURL(image: ImageType) -> str:
1726+
def image_to_dataURL(image: ImageType, image_format:str="PNG") -> str:
17281727
buffered = io.BytesIO()
1729-
image.save(buffered, format="PNG")
1730-
image_base64 = "data:image/png;base64," + base64.b64encode(
1728+
image.save(buffered, format=image_format)
1729+
mime_type = Image.MIME.get(image_format.upper(), "image/" + image_format.lower())
1730+
image_base64 = f"data:{mime_type};base64," + base64.b64encode(
17311731
buffered.getvalue()
17321732
).decode("UTF-8")
17331733
return image_base64

0 commit comments

Comments
 (0)