From e783bcfd05ac577f292009f112678b1b3f008c6c Mon Sep 17 00:00:00 2001 From: Fen Dweller Date: Tue, 9 Jun 2020 10:58:58 -0400 Subject: [PATCH] Set up the overlay script --- .gitignore | 152 ++++++++++++++++++++++++++++++++++++++++++ .vscode/settings.json | 3 + OptimusPrinceps.ttf | Bin 0 -> 41416 bytes overlay.py | 39 +++++++++++ you-died.py | 0 5 files changed, 194 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/settings.json create mode 100644 OptimusPrinceps.ttf create mode 100644 overlay.py create mode 100644 you-died.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..56d3761 --- /dev/null +++ b/.gitignore @@ -0,0 +1,152 @@ +config.json + +# Created by https://www.toptal.com/developers/gitignore/api/python,virtualenv +# Edit at https://www.toptal.com/developers/gitignore?templates=python,virtualenv + +### Python ### +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +### VirtualEnv ### +# Virtualenv +# http://iamzed.com/2009/05/07/a-primer-on-virtualenv/ +[Bb]in +[Ii]nclude +[Ll]ib +[Ll]ib64 +[Ll]ocal +[Ss]cripts +pyvenv.cfg +pip-selfcheck.json + +# End of https://www.toptal.com/developers/gitignore/api/python,virtualenv \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..84a192c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.pythonPath": "venv\\Scripts\\python.exe" +} \ No newline at end of file diff --git a/OptimusPrinceps.ttf b/OptimusPrinceps.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e11017f1c943dfd3cbfdafb6454d8433265aaeea GIT binary patch literal 41416 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 z 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 JbPhYt{{iFRs6GGy literal 0 HcmV?d00001 diff --git a/overlay.py b/overlay.py new file mode 100644 index 0000000..c3aa5ba --- /dev/null +++ b/overlay.py @@ -0,0 +1,39 @@ +from PIL import Image, ImageDraw, ImageFont + +def sub(p1, p2): + return (p1[0] - p2[0], p1[1] - p2[1]) + +def overlay(image_in, image_out): + image = image_in.convert("RGBA") + + size = image.size + center = (size[0]/2, size[1]/2) + message = "YOU DIED" + font_size = size[1] // 6 + gradient_range = size[1] // 10 + + rect_top = sub(center, (0, font_size * 3 // 4)) + rect_bot = sub(center, (0, -font_size * 3 // 4)) + + overlay = Image.new("RGBA", size, (0,0,0,0)) + + draw = ImageDraw.Draw(overlay) + font = ImageFont.truetype("OptimusPrinceps.ttf", font_size) + + draw.rectangle([0, rect_top[1], size[0], rect_bot[1]], fill=(0,0,0)) + + for y in range(-1, -gradient_range - 1, -1): + c = 255 - 255 * (-y) // gradient_range + draw.line([0, rect_top[1] + y, size[0], rect_top[1] + y], fill=(0,0,0,c)) + + for y in range(1, gradient_range + 1, 1): + c = 255 - 255 * (y) // gradient_range + draw.line([0, rect_bot[1] + y, size[0], rect_bot[1] + y], fill=(0,0,0,c)) + + text_size = draw.textsize(message, font=font) + offset = (center[0] - text_size[0]/2, center[1] - text_size[1]/2) + + draw.text(offset, message, (255,0,0), font=font) + + result = Image.alpha_composite(Image.alpha_composite(image, Image.new("RGBA", size, (0,0,0,100))), overlay) + return result \ No newline at end of file diff --git a/you-died.py b/you-died.py new file mode 100644 index 0000000..e69de29