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.9+
- OpenCV (
cv2) - NumPy
- tqdm
- ffmpeg (optional — for audio passthrough)
Release files for siss 0.8.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| siss-0.8.0.tar.gz | 55.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| siss-0.8.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 84.0 kB
Release files / siss-0.8.0.tar.gz
| Download URL | siss-0.8.0.tar.gz |
|---|---|
| Size | 55.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9a65636c0cde05d1a860119333b0e436491ed3704bedf2ee98bb00bdad2cf85e
|
|
BLAKE2b-256 checksum How to use checksums |
6a3436fd6f851842f801c627879279d360acc075bb047abd1fbb9cfac542e729
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency logRelease files / siss-0.8.0-py3-none-any.whl
| Download URL | siss-0.8.0-py3-none-any.whl |
|---|---|
| Size | 28.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b5fb4a94e6e3beb307bfa9d0396dd90c6d6087715e1608c9f83582638677f5e2
|
|
BLAKE2b-256 checksum How to use checksums |
d2533df935e2dc682763f1dd764182a7d2afcfbeec19e4335d0da33c7f3ff2aa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.
Transparency log