Skip to content
SPECIFICTION
Get listed

phomo

github.com

Free plan Open source WebWindowsmacOSLinuxAPI
Visit github.com
Spec score 8.8 #2 of 24 in Photo Mosaic Software

What it is

phomo is a free tool that creates photographic mosaics by arranging tile images to recreate a master image. It compares color distributions between tiles and regions of the master, then assigns tiles using a linear sum assignment algorithm. The project can be installed with pip as a Python package or run through its `phomo` command, which accepts a master image and a directory of tile images. Command-line options include cropping and resizing the master and tiles, black-and-white conversion, grid display, and control over how often tiles appear. Matching choices include greyscale, norm, and luv_approx distance metrics, color equalization, and color-distribution matching. A greedy assignment mode is described as improving performance while reducing accuracy. CUDA acceleration is available through an extra, requiring a CUDA-compatible GPU and toolkit. The package requires Python >=3.9 and <3.13, runs on Linux, macOS, and Windows, and lists PNG as its output format. It is published under the MIT License.

Spec sheet

What it does
phomo creates photographic mosaics by arranging tile images to recreate a master image.Read 15 Oct 2026 · github.com
Purpose
phomo creates photographic mosaics by arranging tile images to recreate a master image.Read 3 Oct 2026 · github.com
Platforms
PyPI lists macOS, Windows, and Linux operating system classifiers for the package.Read 3 Oct 2026 · pypi.org
License
The package is released under the MIT License, permitting reuse, modification, distribution, sublicensing, and sale subject to the notice and warranty terms.Read 15 Oct 2026 · raw.githubusercontent.com
Assignment algorithm
The default builder solves the tile-placement assignment problem with SciPy's linear-sum-assignment implementation.Read 15 Oct 2026 · loiccoyle.com
Changelog: dependency security
The 1.1.2 changelog entry dated January 18, 2025 says dependencies were updated to close Dependabot security alerts.Read 15 Oct 2026 · github.com
Changelog: greedy flag
The 1.2.0 changelog entry dated January 21, 2025 records exposing greedy assignment through the CLI and documenting its flag.Read 15 Oct 2026 · github.com
CLI image controls
CLI flags cover cropping, resizing, black-and-white conversion, tile reuse count, grid display, and verbosity.Read 15 Oct 2026 · github.com
CLI inputs
The command accepts a master image path and a directory of tile images and writes a mosaic output file.Read 15 Oct 2026 · github.com
CLI isolation
The documentation recommends pipx when the user only needs the command-line tool.Read 15 Oct 2026 · docs.loiccoyle.com
Color matching flags
CLI options can equalize colors or match the master palette to tiles and tiles to the master.Read 15 Oct 2026 · github.com
Color-distribution matching
Its distance calculation compares color distributions within tiles and master regions rather than only average colors.Read 15 Oct 2026 · loiccoyle.com
Command line
The package provides a `phomo` command that accepts a master image and a directory of tile images.Read 3 Oct 2026 · github.com
CUDA API limit
The CUDA distance-matrix method supports only norm and greyscale metrics and requires Numba with CUDA installed.Read 15 Oct 2026 · docs.loiccoyle.com
Distance metrics
The CLI exposes greyscale, norm, and luv_approx metrics.Read 15 Oct 2026 · github.com
Distance-matrix API
Mosaic.d_matrix accepts a worker count, a named metric, or a custom callable and returns a NumPy array.Read 15 Oct 2026 · docs.loiccoyle.com
Documentation depth
The documentation includes installation, CLI help, examples, class references, and performance guidance.Read 15 Oct 2026 · docs.loiccoyle.com
GPU acceleration
An optional CUDA path uses Numba kernels to accelerate distance-matrix computation.Read 15 Oct 2026 · loiccoyle.com
GPU support
GPU acceleration is available through the CUDA extra and requires a CUDA-compatible GPU and CUDA toolkit.Read 3 Oct 2026 · github.com
Greedy mode
A greedy assignment option is documented as faster while sacrificing matching accuracy.Read 15 Oct 2026 · github.com
Grid visualization
The package can display a master-image tile grid and subdivide high-contrast regions.Read 15 Oct 2026 · loiccoyle.com
Image controls
CLI options include cropping and resizing the master and tile images, black-and-white conversion, grid display, and tile appearance count.Read 3 Oct 2026 · github.com
Installation
PyPI documents installation with pip and offers a separate phomo[cuda] extra.Read 15 Oct 2026 · pypi.org
Latest release
PyPI lists version 1.2.0 as released on January 21, 2025.Read 15 Oct 2026 · pypi.org
Maintainer
PyPI identifies Loic Coyle as the author and lists loiccoyle as the sole maintainer.Read 15 Oct 2026 · pypi.org
Maker profile
Loïc Coyle's GitHub profile lists London as location and Polaron as affiliation.Read 15 Oct 2026 · github.com
Matching options
The CLI offers greyscale, norm, and luv_approx distance metrics, color equalization, and options to match color distributions.Read 3 Oct 2026 · github.com
Package artifacts
Version 1.2.0 is distributed as a 17.5 kB source archive and a 19.9 kB universal Python wheel.Read 15 Oct 2026 · pypi.org
Palette tools
Palette normalization and Reinhard color-transfer modes can alter either the tiles or the master image to align color distributions.Read 15 Oct 2026 · loiccoyle.com
Parallel processing
Distance-matrix work can be split among multiple worker processes.Read 15 Oct 2026 · loiccoyle.com
Performance option
A greedy tile assignment option is described as improving performance at the expense of accuracy.Read 3 Oct 2026 · github.com
Python API
The documented Python API centers on Master, Pool, and Mosaic classes.Read 15 Oct 2026 · docs.loiccoyle.com
Python package
The project can be installed with pip and used as a Python package.Read 3 Oct 2026 · github.com
Python versions
PyPI states that the package requires Python >=3.9 and <3.13.Read 3 Oct 2026 · pypi.org
Release history
The PyPI history begins with version 0.1.0 dated September 10, 2021.Read 15 Oct 2026 · pypi.org
Runtime dependencies
The project declares Pillow, NumPy, tqdm, Matplotlib, SciPy, and OpenCV dependencies, with Numba optional for CUDA.Read 15 Oct 2026 · github.com
Rust port
The related phomo-rs project provides a Rust library, command-line binary, WebAssembly bindings, and browser web app.Read 15 Oct 2026 · loiccoyle.com
Supported operating systems
PyPI classifiers list MacOS, Microsoft Windows, and POSIX Linux.Read 15 Oct 2026 · pypi.org
System requirement
The package requires Python 3.9 or newer but below Python 3.13.Read 15 Oct 2026 · pypi.org
Tile matching
It compares tile images with master image regions using color distribution differences, then assigns tiles to regions with a linear sum assignment algorithm.Read 3 Oct 2026 · github.com
Tile-size requirement
Mosaic construction expects the Pool tiles to have matching dimensions.Read 15 Oct 2026 · docs.loiccoyle.com
WebAssembly package
The web-app article shows phomo-wasm being installed with npm add phomo-wasm and used from JavaScript bindings.Read 15 Oct 2026 · loiccoyle.com

Plans and prices

Open-source package Free Python >=3.9 and <3.13 · local CLI/Python use · optional CUDA extra Read 15 Oct 2026 · pypi.org
phomo Free Python package and CLI utility · CUDA acceleration requires a compatible GPU and CUDA toolkit Read 3 Oct 2026 · github.com

Every phomo plan and price →

Strong points and limits

Strong points

  • Free Python package and command-line utility.
  • Offers multiple tile-matching metrics and color controls.
  • Supports Linux, macOS, and Windows.
  • Published under the MIT License.

Limits

  • Requires Python >=3.9 and <3.13.
  • CUDA acceleration requires a compatible GPU and toolkit.
  • Greedy assignment trades accuracy for performance.

Who it suits

phomo suits people comfortable using a Python package or command-line tool to build image mosaics from their own tile library. It offers controls for image preparation and tile matching across Linux, macOS, and Windows.

Verdict

phomo exposes mosaic creation through a Python package and CLI, with several image and matching controls. CUDA acceleration has additional hardware and toolkit requirements, while greedy assignment sacrifices accuracy for performance.

Where Specifiction places it

Alternatives to phomoAll alternatives →