Compare commits

...

4 commits
1.1.1 ... main

Author SHA1 Message Date
89af320a66
under text getting eaten
All checks were successful
Upload release / build (push) Successful in 3s
2024-10-07 23:11:46 +02:00
a61cc02c42
Release at each commit, release will now override the old one
All checks were successful
Upload release / build (push) Successful in 3s
2024-10-03 21:27:39 +02:00
0a790e8a75
vertical text generator into function
All checks were successful
Upload release / build (push) Successful in 7s
2024-10-03 21:11:48 +02:00
a19353f869
boost sign image thickness and contrast 2024-10-03 21:06:11 +02:00
2 changed files with 35 additions and 10 deletions

View file

@ -2,8 +2,7 @@ name: Upload release
on: on:
push: push:
tags: branches: [main]
- "*"
jobs: jobs:
build: build:
@ -18,4 +17,6 @@ jobs:
uses: akkuman/gitea-release-action@v1 uses: akkuman/gitea-release-action@v1
with: with:
token: ${{ secrets.TOKEN }} token: ${{ secrets.TOKEN }}
name: Latest version
tag_name: latest
files: horoscope.bat files: horoscope.bat

40
main.py
View file

@ -5,7 +5,7 @@ from random import choice
from sys import argv from sys import argv
from urllib.request import urlretrieve from urllib.request import urlretrieve
from PIL import Image, ImageDraw, ImageFont from PIL import Image, ImageDraw, ImageEnhance, ImageFilter, ImageFont
zodiac_signs = [ zodiac_signs = [
"Belier", "Belier",
@ -41,6 +41,34 @@ def get_path(image: str):
return join(image_dir, f"{image.lower()}.png") return join(image_dir, f"{image.lower()}.png")
def get_sign_image(image: str):
"""Get sign image"""
sign_image = Image.open(get_path(image)).convert("RGBA")
# Add thickness
alpha = sign_image.split()[3]
bold_mask = alpha.filter(ImageFilter.MaxFilter())
sign_image.putalpha(bold_mask)
# Add contrast
enhancer = ImageEnhance.Contrast(sign_image)
enhanced_image = enhancer.enhance(2.0)
enhanced_image.thumbnail((100, 105))
return enhanced_image
def vertical_text(text: str, font: ImageFont.ImageFont | ImageFont.FreeTypeFont):
"""Image with vertical text"""
text_img = Image.new("RGBA", (135, 29), (255, 255, 255, 0))
text_draw = ImageDraw.Draw(text_img)
text_draw.text((0, 0), f"{text:^15}", font=font, fill="black")
text_draw = text_img.rotate(90, expand=True)
return text_draw
def create_horoscope_image(horoscope: dict[str, dict[str, str]]): def create_horoscope_image(horoscope: dict[str, dict[str, str]]):
"""Generate horoscope images""" """Generate horoscope images"""
img_width, img_height = 1200, 425 img_width, img_height = 1200, 425
@ -54,16 +82,12 @@ def create_horoscope_image(horoscope: dict[str, dict[str, str]]):
x, y = 10, 10 x, y = 10, 10
for sign, prediction in horoscope.items(): for sign, prediction in horoscope.items():
sign_image = Image.open(get_path(sign)).convert("RGBA") sign_image = get_sign_image(sign)
sign_image.thumbnail((100, 105))
image.paste(sign_image, (x + 20, y), sign_image) image.paste(sign_image, (x + 20, y), sign_image)
# Sign text # Sign text
text_img = Image.new("RGBA", (135, 24), (255, 255, 255, 0)) text_draw = vertical_text(sign, font_sign)
text_draw = ImageDraw.Draw(text_img) image.paste(text_draw, (x - 12, y - 10), text_draw)
text_draw.text((0, 0), f"{sign:^15}", font=font_sign, fill="black")
text_draw = text_img.rotate(90, expand=True)
image.paste(text_draw, (x - 10, y - 10), text_draw)
# Love prediction # Love prediction
love = Image.open(join(image_dir, "love.png")).convert("RGBA") love = Image.open(join(image_dir, "love.png")).convert("RGBA")