webui: chat rendering refactor + image_read PNG compression
This commit is contained in:
parent
0eb6cad285
commit
84f5d26d60
|
|
@ -35,6 +35,25 @@ if not mime:
|
||||||
with open(file_path, 'rb') as f:
|
with open(file_path, 'rb') as f:
|
||||||
data = f.read()
|
data = f.read()
|
||||||
|
|
||||||
|
MAX_SIZE = 128 * 1024
|
||||||
|
|
||||||
|
if mime == 'image/png' and len(data) > MAX_SIZE:
|
||||||
|
from PIL import Image
|
||||||
|
import io
|
||||||
|
img = Image.open(io.BytesIO(data))
|
||||||
|
# progressively scale down until under budget
|
||||||
|
for scale in [1.0, 0.75, 0.5, 0.35, 0.25]:
|
||||||
|
buf = io.BytesIO()
|
||||||
|
if scale < 1.0:
|
||||||
|
new_size = (int(img.width * scale), int(img.height * scale))
|
||||||
|
resized = img.resize(new_size, Image.LANCZOS)
|
||||||
|
else:
|
||||||
|
resized = img
|
||||||
|
resized.save(buf, format='PNG', optimize=True)
|
||||||
|
data = buf.getvalue()
|
||||||
|
if len(data) <= MAX_SIZE:
|
||||||
|
break
|
||||||
|
|
||||||
b64 = base64.b64encode(data).decode('ascii')
|
b64 = base64.b64encode(data).decode('ascii')
|
||||||
|
|
||||||
print(json.dumps({"isError": False, "content": [
|
print(json.dumps({"isError": False, "content": [
|
||||||
|
|
|
||||||
2
webui
2
webui
|
|
@ -1 +1 @@
|
||||||
Subproject commit 6d21f142afda6f870556229e4acfdbb2c5fbfdc4
|
Subproject commit aa0e99213dffc26c8ebb54b13946afefbc205b29
|
||||||
Loading…
Reference in New Issue