🐛 fix advent_image.py

- `get_average_color` working again
- refactor `hide_text` (fail-fast)
This commit is contained in:
Jörn-Michael Miehe 2025-12-19 19:46:55 +01:00
parent 5c865b8dbb
commit 6ff5af45d5

View file

@ -1,4 +1,5 @@
import colorsys
import logging
from dataclasses import dataclass
from typing import Self, TypeAlias, cast
@ -14,6 +15,8 @@ _RGB: TypeAlias = tuple[int, int, int]
_XY: TypeAlias = tuple[float, float]
_Box: TypeAlias = tuple[int, int, int, int]
_logger = logging.getLogger(__name__)
@dataclass(slots=True, frozen=True)
class AdventImage:
@ -83,15 +86,14 @@ class AdventImage:
async def get_average_color(
self,
box: _Box,
) -> tuple[int, int, int]:
) -> _RGB:
"""
Durchschnittsfarbe eines rechteckigen Ausschnitts in
einem Bild berechnen
"""
pixel_data = np.asarray(self.img.crop(box))
print(pixel_data)
mean_color: np.ndarray = np.mean(pixel_data, axis=0)
mean_color: np.ndarray = np.mean(pixel_data, axis=(0, 1))
return cast(_RGB, tuple(mean_color.astype(int)))
@ -113,7 +115,10 @@ class AdventImage:
xy=xy, text=text, font=font, anchor=anchor, **text_kwargs
)
if text_box is not None:
if text_box is None:
_logger.warning("Konnte Bildbereich nicht finden!")
return
# Durchschnittsfarbe bestimmen
text_color = await self.get_average_color(
box=text_box,