Generate a basic favicon dynamically

This commit is contained in:
Thomas Sileo 2022-07-22 08:46:14 +02:00
parent edae9a6b62
commit d88a1ad5ba
6 changed files with 29 additions and 1 deletions

View file

@ -8,6 +8,7 @@
<link rel="alternate" title="{{ local_actor.display_name}}'s microblog" type="application/json" href="{{ url_for("json_feed") }}" />
<link rel="alternate" href="{{ url_for("rss_feed") }}" type="application/rss+xml" title="{{ local_actor.display_name}}'s microblog">
<link rel="alternate" href="{{ url_for("atom_feed") }}" type="application/atom+xml" title="{{ local_actor.display_name}}'s microblog">
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<style>
{{ highlight_css }}
</style>

22
app/utils/favicon.py Normal file
View file

@ -0,0 +1,22 @@
import sass # type: ignore
from PIL import Image
from PIL import ImageColor
from PIL import ImageDraw
def _get_primary_color() -> str:
"""Small hack to get the theme primary color."""
compiled = sass.compile(
string=(
"@import 'app/scss/main.scss';\n"
"#favicon-color { color: $primary-color; }"
)
)
return compiled[len(compiled) - 11 : -4]
def build_favicon() -> None:
"""Builds a basic favicon with the theme primary color."""
im = Image.new("RGB", (32, 32), ImageColor.getrgb(_get_primary_color()))
ImageDraw.Draw(im)
im.save("app/static/favicon.ico")