A Python command line interface tool for theming .svg files using user-provided images.
Project description
pyflagoras
🏳️🌈 A Python command line interface tool for theming .svg
files using user-provided images. The program accepts any image file, an .svg
file and outputs the flag as a .png
file.
https://github.com/phthallo/pyflagoras/assets/84078890/8927779e-5e1c-411e-9d14-6bf1bdb8396d
(To see more examples of flags generated using this program, visit examples.md!)
How does it work?
Pyflagoras, at a minimum, needs the name of a pride flag, or a path to an .svg
, and a path to an image to work.
It uses Pillow to generate a list of colours in the image.
The program then obtains the flag's .svg
file from the alias used, and extracts the all the colours used in the flag. It uses an algorithm to calculate which colours are the most similar based on their RGB codes.
Finally, the colours are swapped out. The .svg
is converted into a .pdf
using svglib then into a .png
using PyMuPDF.
tl;dr - if you ever wanted the Slack logo to have the same colours as a cool photo you took you absolutely can.
Installation
You can install this package from pypi.org! Open a terminal and run the following:
pip install pyflagoras
Usage
$ pyflagoras --help
usage: pyflagoras [-h] [-f FLAG] [-n NAME] [--verbose] [--svg] [--version] [-l] image
A command line interface tool for theming .svg files using user-provided images.
positional arguments:
image Path to the image to generate a flag from.
Examples:
image.png
foo/bar/image.jpg
options:
-h, --help show this help message and exit
-f FLAG, --flag FLAG The alias of the flag to generate OR path to a custom .svg file.
Examples:
intersexinclusive
/foo/bar/file.svg
Default:
progresspride
-n NAME, --name NAME Customise the name of the final .png. The following can be used as part of the file name:
Format placeholders:
{n}: File name (e.g celeste_classic)
{N}: File name (full) (e.g celeste_classic.png)
{f}: Flag name (e.g Progress Pride) [N/A for custom .svg]
{F}: Flag ID (e.g progressPride_2018) [N/A for custom .svg]
Examples:
pyflagoras celeste_classic.png -n "{f}_{n}" [renders Progress Pride_celeste_classic.png]
Default:
{n}_{F} [renders celeste_classic_progressPride_2018.png]
--verbose Enable verbosity (for general info and debugging)
--svg Generate the flag's .svg file in addition to the .png
--version show the program's version number and exit
-l, --list show all flag aliases and exit
Documentation, issues and more: https://github.com/phthallo/pyflagoras
Tip: Using --verbose
will log the coordinates of where the colours were found on your image!
Development
Substitute py
for python3
as necessary.
- Clone the repository.
git clone https://github.com/phthallo/pyflagoras
- Install the build tool.
py -m pip install --upgrade build
cd
to the root of the repository and build the package.py -m build
- Both the source distribution (
pyflagoras-x.x.x-tar.gz
) and the built distribution (pyflagoras-x.x.x-py3-none-any.whl
) will be found under the/dist
subdirectory. You can then install the wheel using:py -m pip install dist/pyflagoras-x.x.x-py3-none-any.whl
- To preview your changes without having to build, run the following to install Pyflagoras in editable mode.
py -m pip install -e .
Contributions
The current 'pre-loaded' .svg
files are pride flags! They have been sourced from @/JoeHart's Pride Flag API.
To add a new flag, see addingflags.md.
Notes
- The name
pyflagoras
comes from python, pride flag, and the basic colour similarity algorithm being a 3D application of Pythagoras' theorem. - See also the prideflagbot account (gone but not forgotten!) run by @/michalpazur, which was a big inspiration for this project.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pyflagoras-0.4.4.tar.gz
.
File metadata
- Download URL: pyflagoras-0.4.4.tar.gz
- Upload date:
- Size: 20.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e6f20d99e50dfae8125d6e1f346e8c62797e59048455ea6e1635a4c352a01051 |
|
MD5 | 4114c35dcfa2e91bdfcb9ae1bff2dea4 |
|
BLAKE2b-256 | 29e039707494b633590a4b23617b01529e02fecb27b341a9e3aa7fef671c9781 |
File details
Details for the file pyflagoras-0.4.4-py3-none-any.whl
.
File metadata
- Download URL: pyflagoras-0.4.4-py3-none-any.whl
- Upload date:
- Size: 28.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 538bfac9c6576a625d6d139ac40b8162e661d673de75c5ca653d6a14a9f1a442 |
|
MD5 | 90ac3020067ca20a3b9d3643f09b8992 |
|
BLAKE2b-256 | 27bd9366c1056ccc1840b7f973110dd8f8620a2c1642c28327ec0849ee2a873c |