A command-line utility for applying artistic effects to videos and still images
Project description
Siss
A command-line tool for applying duotone and halftone effects to video and still-image files. Duotone maps per-pixel luminance to a linear blend between two user-supplied RGB colors; halftone renders plus, asterisk, slash, or dot symbols at luminance-proportional sizes over a 3×3-pixel sampled grid, on a square or hex-offset screen. Accepts hex strings, CSS named colors, RGB triples, and named two-color palettes.
Features
- Duotone – maps per-pixel luminance to a linear gradient between two RGB colors;
color1is applied to dark areas,color2to light areas - Halftone – renders plus, asterisk, slash, or dot symbols at sizes proportional to local luminance (3×3-pixel sampled average), with independent symbol and background colors, over a square or hex-offset sampling grid
- Color input – accepts 3- and 6-digit hex strings (with or without
#), case-insensitive CSS named colors, RGB integer triples, and named two-color palettes via--palette - Still-image output – write PNG, JPEG, BMP, TIFF, or WebP by using an image extension for the output path; reuses the same per-frame effect closures as video output
- Codec selection – probes
cv2.VideoWriter_fourcccandidates per output format and OS; falls back through a priority list until a working codec is found - Audio passthrough – copies the original audio track into the output with
ffmpegafter rendering; disable with--no-audio - Custom palettes – load your own two-color looks from a JSON file with
--palette-file; custom names shadow built-in ones
Installation
pip install siss
Quick Start
After installation, run siss from the command line:
siss input_video.mp4 output_video.mp4 --effect duotone
To process a still image, use an image extension for the output path:
siss input.jpg output.png --effect duotone --palette sunset
Specifying Colors
Colors accept hex strings, CSS names, RGB triples, or curated palettes:
siss input.mp4 output.mp4 --effect duotone --color1 "#3b1f4b" --color2 gold
siss input.mp4 output.mp4 --effect duotone --palette sunset
siss --list-palettes
Example Effects
Duotone Effect
siss input.mp4 output.mp4 --effect duotone --color1 56 12 45 --color2 217 237 3
Applies a duotone effect with deep purple mapped to dark areas and bright yellow-green to light areas.
Halftone Effect
siss input.mp4 output.mp4 --effect halftone --symbol_type slash --symbol_size 20 --color1 56 12 45 --color2 217 237 3
Applies a halftone effect with slash symbols at luminance-proportional sizes.
Documentation
See the GitHub repository for full documentation.
Requirements
- Python 3.7+
- OpenCV (
cv2) - NumPy
- tqdm
- ffmpeg (optional — for audio passthrough)
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file siss-0.7.0.tar.gz.
File metadata
- Download URL: siss-0.7.0.tar.gz
- Upload date:
- Size: 42.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0644cd9b31eddc56eda805a441c3ff58aff1f65bbb1c84577c081ed3ed8f51b
|
|
| MD5 |
52e3e17d112b670ee2576e22ba64bb98
|
|
| BLAKE2b-256 |
63abd7b7dd3ffbca8cdccf585928dee009706d6350eb2b74fd197ce9201f3120
|
Provenance
The following attestation bundles were made for siss-0.7.0.tar.gz:
Publisher:
publish.yml on MichailSemoglou/siss
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
siss-0.7.0.tar.gz -
Subject digest:
f0644cd9b31eddc56eda805a441c3ff58aff1f65bbb1c84577c081ed3ed8f51b - Sigstore transparency entry: 2256233216
- Sigstore integration time:
-
Permalink:
MichailSemoglou/siss@0619387813ea1a8cde28a68f5512d376b762abc6 -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/MichailSemoglou
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0619387813ea1a8cde28a68f5512d376b762abc6 -
Trigger Event:
release
-
Statement type:
File details
Details for the file siss-0.7.0-py3-none-any.whl.
File metadata
- Download URL: siss-0.7.0-py3-none-any.whl
- Upload date:
- Size: 23.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21d0e58c51759846152e87f3de30236c84f2c12f511880438e3df28567555a24
|
|
| MD5 |
428ac6b410705bf19a7b23fdcffefe33
|
|
| BLAKE2b-256 |
46c3dcf51b1313bed16da773646519c14e59d816382b8a9b73815cc4916cc632
|
Provenance
The following attestation bundles were made for siss-0.7.0-py3-none-any.whl:
Publisher:
publish.yml on MichailSemoglou/siss
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
siss-0.7.0-py3-none-any.whl -
Subject digest:
21d0e58c51759846152e87f3de30236c84f2c12f511880438e3df28567555a24 - Sigstore transparency entry: 2256233226
- Sigstore integration time:
-
Permalink:
MichailSemoglou/siss@0619387813ea1a8cde28a68f5512d376b762abc6 -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/MichailSemoglou
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0619387813ea1a8cde28a68f5512d376b762abc6 -
Trigger Event:
release
-
Statement type: