Bladeren bron

Better crop/resize cached images

oobabooga 2 jaren geleden
bovenliggende
commit
80dfba05f3
4 gewijzigde bestanden met toevoegingen van 8 en 11 verwijderingen
  1. 2 5
      extensions/gallery/script.py
  2. 3 3
      modules/chat.py
  3. 2 2
      modules/html_generator.py
  4. 1 1
      server.py

+ 2 - 5
extensions/gallery/script.py

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

+ 3 - 3
modules/chat.py

@@ -7,7 +7,7 @@ from datetime import datetime
 from pathlib import Path
 
 import yaml
-from PIL import Image
+from PIL import Image, ImageOps
 
 import modules.extensions as extensions_module
 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']]:
         if path.exists():
             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')
             return img
     return None
@@ -432,6 +432,6 @@ def upload_your_profile_picture(img):
         if Path("cache/pfp_me.png").exists():
             Path("cache/pfp_me.png").unlink()
     else:
-        img.thumbnail((200, 200))
+        img = ImageOps.fit(img, (350, 470), Image.ANTIALIAS)
         img.save(Path('cache/pfp_me.png'))
         print('Profile picture saved to "cache/pfp_me.png"')

+ 2 - 2
modules/html_generator.py

@@ -10,7 +10,7 @@ import time
 from pathlib import Path
 
 import markdown
-from PIL import Image
+from PIL import Image, ImageOps
 
 # This is to store the paths to the thumbnails of the profile pictures
 image_cache = {}
@@ -104,7 +104,7 @@ def get_image_cache(path):
     mtime = os.stat(path).st_mtime
     if (path in image_cache and mtime != image_cache[path][0]) or (path not in image_cache):
         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')
         img.convert('RGB').save(output_file, format='PNG')
         image_cache[path] = [mtime, output_file.as_posix()]

+ 1 - 1
server.py

@@ -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['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['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_inputs = [shared.gradio['name1'], shared.gradio['name2']] if shared.args.cai_chat else []