mirror of
https://git.linux-kernel.at/oliver/ivatar.git
synced 2025-11-18 05:58:02 +00:00
Merge master
This commit is contained in:
@@ -86,6 +86,10 @@ MAX_PIXELS = 7000
|
||||
AVATAR_MAX_SIZE = 512
|
||||
JPEG_QUALITY = 85
|
||||
|
||||
# Robohash Performance Optimization
|
||||
# Enable optimized robohash implementation for 6-22x performance improvement
|
||||
ROBOHASH_OPTIMIZATION_ENABLED = True
|
||||
|
||||
# Robohash Configuration
|
||||
# Maximum number of robot parts to cache in memory (each ~50-200KB)
|
||||
ROBOHASH_CACHE_SIZE = 150 # ~10-30MB total cache size
|
||||
|
||||
@@ -16,8 +16,9 @@ class OptimizedRobohash(Robohash):
|
||||
"""
|
||||
Performance-optimized version of Robohash that:
|
||||
1. Caches directory structure to avoid repeated filesystem scans
|
||||
2. Reduces natsort calls from 163 to ~10 per generation
|
||||
3. Provides 2-6x performance improvement while maintaining 100% compatibility
|
||||
2. Eliminates double resizing (1024x1024 -> target size)
|
||||
3. Reduces natsort calls from 163 to ~10 per generation
|
||||
4. Provides 6-22x performance improvement while maintaining 100% compatibility
|
||||
"""
|
||||
|
||||
# Class-level cache shared across all instances
|
||||
@@ -226,7 +227,9 @@ class OptimizedRobohash(Robohash):
|
||||
# Add background if specified
|
||||
if background_path:
|
||||
try:
|
||||
bg = Image.open(background_path).resize((1024, 1024))
|
||||
bg = Image.open(background_path).resize(
|
||||
(sizex, sizey), Image.LANCZOS
|
||||
)
|
||||
bg.paste(roboimg, (0, 0), roboimg)
|
||||
roboimg = bg
|
||||
except Exception:
|
||||
|
||||
@@ -27,6 +27,7 @@ from monsterid.id import build_monster as BuildMonster
|
||||
import Identicon
|
||||
from pydenticon5 import Pydenticon5
|
||||
import pagan
|
||||
from .robohash_optimized import create_optimized_robohash
|
||||
from .robohash_cached import create_robohash
|
||||
|
||||
from ivatar.settings import AVATAR_MAX_SIZE, JPEG_QUALITY, DEFAULT_AVATAR_SIZE
|
||||
@@ -273,6 +274,7 @@ class AvatarImageView(TemplateView):
|
||||
return self._return_cached_png(monsterdata, data, uri)
|
||||
if str(default) == "robohash":
|
||||
roboset = request.GET.get("robohash") or "any"
|
||||
data = create_optimized_robohash(kwargs["digest"], size, roboset)
|
||||
data = create_robohash(kwargs["digest"], size, roboset)
|
||||
return self._return_cached_response(data, uri)
|
||||
if str(default) == "retro":
|
||||
|
||||
Reference in New Issue
Block a user