Better crop/resize cached images

This commit is contained in:
oobabooga 2023-04-04 22:52:15 -03:00
parent 65d8a24a6d
commit 80dfba05f3
4 changed files with 8 additions and 11 deletions

View File

@ -74,11 +74,8 @@ def generate_html():
path = Path(i) path = Path(i)
if path.exists(): if path.exists():
try:
image_html = f'<img src="file/{get_image_cache(path)}">' image_html = f'<img src="file/{get_image_cache(path)}">'
break break
except:
continue
container_html += f'{image_html} <span class="character-name">{character}</span>' container_html += f'{image_html} <span class="character-name">{character}</span>'
container_html += "</div>" container_html += "</div>"

View File

@ -7,7 +7,7 @@ from datetime import datetime
from pathlib import Path from pathlib import Path
import yaml import yaml
from PIL import Image from PIL import Image, ImageOps
import modules.extensions as extensions_module import modules.extensions as extensions_module
import modules.shared as shared import modules.shared as shared
@ -334,7 +334,7 @@ def generate_pfp_cache(character):
for path in [Path(f"characters/{character}.{extension}") for extension in ['png', 'jpg', 'jpeg']]: for path in [Path(f"characters/{character}.{extension}") for extension in ['png', 'jpg', 'jpeg']]:
if path.exists(): if path.exists():
img = Image.open(path) img = Image.open(path)
img.thumbnail((200, 200)) img = ImageOps.fit(img, (350, 470), Image.ANTIALIAS)
img.save(Path('cache/pfp_character.png'), format='PNG') img.save(Path('cache/pfp_character.png'), format='PNG')
return img return img
return None return None
@ -432,6 +432,6 @@ def upload_your_profile_picture(img):
if Path("cache/pfp_me.png").exists(): if Path("cache/pfp_me.png").exists():
Path("cache/pfp_me.png").unlink() Path("cache/pfp_me.png").unlink()
else: else:
img.thumbnail((200, 200)) img = ImageOps.fit(img, (350, 470), Image.ANTIALIAS)
img.save(Path('cache/pfp_me.png')) img.save(Path('cache/pfp_me.png'))
print('Profile picture saved to "cache/pfp_me.png"') print('Profile picture saved to "cache/pfp_me.png"')

View File

@ -10,7 +10,7 @@ import time
from pathlib import Path from pathlib import Path
import markdown import markdown
from PIL import Image from PIL import Image, ImageOps
# This is to store the paths to the thumbnails of the profile pictures # This is to store the paths to the thumbnails of the profile pictures
image_cache = {} image_cache = {}
@ -104,7 +104,7 @@ def get_image_cache(path):
mtime = os.stat(path).st_mtime mtime = os.stat(path).st_mtime
if (path in image_cache and mtime != image_cache[path][0]) or (path not in image_cache): if (path in image_cache and mtime != image_cache[path][0]) or (path not in image_cache):
img = Image.open(path) img = Image.open(path)
img.thumbnail((200, 200)) img = ImageOps.fit(img, (350, 470), Image.ANTIALIAS)
output_file = Path(f'cache/{path.name}_cache.png') output_file = Path(f'cache/{path.name}_cache.png')
img.convert('RGB').save(output_file, format='PNG') img.convert('RGB').save(output_file, format='PNG')
image_cache[path] = [mtime, output_file.as_posix()] image_cache[path] = [mtime, output_file.as_posix()]

View File

@ -406,7 +406,7 @@ def create_interface():
shared.gradio['character_menu'].change(chat.load_character, [shared.gradio[k] for k in ['character_menu', 'name1', 'name2']], [shared.gradio[k] for k in ['name1', 'name2', 'character_picture', 'greeting', 'context', 'display']]) shared.gradio['character_menu'].change(chat.load_character, [shared.gradio[k] for k in ['character_menu', 'name1', 'name2']], [shared.gradio[k] for k in ['name1', 'name2', 'character_picture', 'greeting', 'context', 'display']])
shared.gradio['upload_chat_history'].upload(chat.load_history, [shared.gradio['upload_chat_history'], shared.gradio['name1'], shared.gradio['name2']], []) shared.gradio['upload_chat_history'].upload(chat.load_history, [shared.gradio['upload_chat_history'], shared.gradio['name1'], shared.gradio['name2']], [])
shared.gradio['upload_img_tavern'].upload(chat.upload_tavern_character, [shared.gradio['upload_img_tavern'], shared.gradio['name1'], shared.gradio['name2']], [shared.gradio['character_menu']]) shared.gradio['upload_img_tavern'].upload(chat.upload_tavern_character, [shared.gradio['upload_img_tavern'], shared.gradio['name1'], shared.gradio['name2']], [shared.gradio['character_menu']])
shared.gradio['your_picture'].change(chat.upload_your_profile_picture, shared.gradio['your_picture'], []) shared.gradio['your_picture'].change(chat.upload_your_profile_picture, shared.gradio['your_picture'], None)
reload_func = chat.redraw_html if shared.args.cai_chat else lambda : shared.history['visible'] reload_func = chat.redraw_html if shared.args.cai_chat else lambda : shared.history['visible']
reload_inputs = [shared.gradio['name1'], shared.gradio['name2']] if shared.args.cai_chat else [] reload_inputs = [shared.gradio['name1'], shared.gradio['name2']] if shared.args.cai_chat else []