Skip to main content

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.

  1. Clone the repository.
    git clone https://github.com/phthallo/pyflagoras
    
  2. Install the build tool.
    py -m pip install --upgrade build
    
  3. cd to the root of the repository and build the package.
    py -m build
    
  4. 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
    
  5. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyflagoras-0.4.4.tar.gz (20.1 kB view details)

Uploaded Source

Built Distribution

pyflagoras-0.4.4-py3-none-any.whl (28.9 kB view details)

Uploaded Python 3

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

Hashes for pyflagoras-0.4.4.tar.gz
Algorithm Hash digest
SHA256 e6f20d99e50dfae8125d6e1f346e8c62797e59048455ea6e1635a4c352a01051
MD5 4114c35dcfa2e91bdfcb9ae1bff2dea4
BLAKE2b-256 29e039707494b633590a4b23617b01529e02fecb27b341a9e3aa7fef671c9781

See more details on using hashes here.

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

Hashes for pyflagoras-0.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 538bfac9c6576a625d6d139ac40b8162e661d673de75c5ca653d6a14a9f1a442
MD5 90ac3020067ca20a3b9d3643f09b8992
BLAKE2b-256 27bd9366c1056ccc1840b7f973110dd8f8620a2c1642c28327ec0849ee2a873c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page