Skip to content

serigrapher/reveal

 
 

Electrosaur

Reveal

Pure JavaScript color separation for screen printing

License

Reduction is revelation: stripping an image down to a small number of spot colors forces you to find what matters in the image. The colors that survive are the ones that carry the meaning. The goal is not reproduction but interpretation — working within the constraints of screen printing and embracing those limitations instead of trying to hide them.

Reveal analyzes your image and generates multiple possible separation palettes based on 20+ built-in archetypes. You select from these and further refine — adding, removing, and altering colors from the suggested palette. The engine recommends; the artist decides.

The Photoshop plugin gives you real-time preview, palette editing, and one-click export to separated Lab layers with masks. The core engine is 100% pure JavaScript with zero external dependencies, so it also runs in Node.js, browsers, and batch pipelines.

Original Separated (flat) Separated (dithered)
Original photo Chameleon flat separation Chameleon dithered separation

Reveal Navigator — Photoshop plugin
Navigator panel in Photoshop — archetype carousel, radar HUD, palette surgery, mechanical knobs

Key Features

  • Lab median cut quantization — Recursive partitioning in perceptual color space, not RGB
  • 20+ archetypes — DNA analysis fingerprints each image and recommends separation parameters (Golden Hour, Commercial, Fine Art Scan, Dark Portrait, etc.)
  • Three distance metrics — CIE76 (fast), CIE94 (perceptual), CIE2000 (museum-grade)
  • Dithering — Floyd-Steinberg, Atkinson, Stucki, Bayer, with mesh-aware LPI scaling
  • Mechanical knobs — Ghost screen removal (minVolume), dust removal (speckleRescue), shadow floor (shadowClamp), color trapping
  • Neutral sovereignty — Automatically isolates white/gray backgrounds to preserve the chromatic color budget
  • 8-bit and 16-bit Lab — Full archival quality support
  • Photoshop plugin — Real-time archetype exploration at 800px proxy, production render to Lab fill+mask layers

Validation

Reveal is validated against three benchmark datasets spanning fine art, photography, and high-chroma graphics:

Dataset Images Avg ΔE Integrity Source
CQ100 300 15.19 100% 100 color quantization benchmark images × 3 adaptive archetypes
TESTIMAGES 40 11.03 100% 40-image COLOR subset for image processing evaluation
SP100 147 6.99 100% Fine art from Met Museum (CC0), Rijksmuseum (CC0), Art Institute of Chicago (CC0)

ΔE = CIE76 perceptual color distance (lower = more faithful). Integrity = physical printability (ink stack violations, density breaches). CQ100 citation: Celebi & Pérez-Delgado, J. Electronic Imaging 32(3), 2023. Full results in packages/reveal-batch/data/.

Install

Photoshop Plugin

  1. Download reveal-*.ccx from the latest release
  2. Double-click the .ccx file to install (or use the Creative Cloud desktop app)
  3. In Photoshop: Plugins → Electrosaur: Reveal → Reveal

Web App (no Photoshop required)

git clone https://github.com/electrosaur-labs/reveal.git
cd reveal
npm install --omit=dev
npm run server

Open http://localhost:3700. See the Web App README for details.

Packages

Package Description
@electrosaur-labs/core Pure JS engines — posterization, separation, DNA analysis, archetypes. Zero dependencies.
@electrosaur-labs/navigator Photoshop UXP panel — real-time archetype exploration, palette surgery, production render
@electrosaur-labs/adobe Photoshop UXP command dialog (superseded by Navigator, kept for reference)
@electrosaur-labs/reveal-app Standalone web UI — no Photoshop required (npm run server)
@electrosaur-labs/batch CLI batch processor for automated testing and benchmarking
@electrosaur-labs/psd-reader Minimal PSD reader for Lab documents
@electrosaur-labs/psd-writer PSD writer for 8/16-bit Lab with fill+mask and pixel layers

Architecture

@electrosaur-labs/core (Pure Math)          Zero dependencies, no I/O
     │
     ├── @electrosaur-labs/navigator        Photoshop UXP panel (real-time preview + production)
     ├── @electrosaur-labs/reveal-app       Standalone web UI (Express, no Photoshop required)
     ├── @electrosaur-labs/adobe            Photoshop UXP dialog (legacy)
     └── @electrosaur-labs/batch            Node.js CLI for benchmarking (ag-psd, sharp)

The core engines are pure computation — no file system, no network, no Photoshop APIs. Adapters handle I/O for each platform. This means you can run the same separation algorithm in a Photoshop plugin, a Node.js batch pipeline, a web worker, or an AI agent's function call.

Processing Pipeline

Lab pixels → DNA Analysis → Parameter Generation → Bilateral Filter
    → Median Cut Quantization → Pixel Separation → Mask Generation
    → Photoshop Lab fill+mask layers

Development

# Build all packages
npm run build

# Test core engines (Vitest)
npm run test:core

# Watch mode
cd packages/reveal-core && npm run test:watch

# Build Photoshop plugins
npm run build:navigator
npm run build:adobe

# Batch processing
cd packages/reveal-batch
npm run reveal              # Single image
npm run process-cq100       # Benchmark dataset

User Guide

New to Reveal? See the User Guide for a screen printer's walkthrough of the Photoshop plugin.

Contributing

See CONTRIBUTING.md for development setup, coding conventions, and PR workflow.

Acknowledgments

Dedicated to Doug Minkler, who taught me everything I know about screen printing.

License

Copyright 2026 Electrosaur Labs. Licensed under the Apache License 2.0.

About

An Opinionated Posterization Engine for Screen Printing

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 94.3%
  • HTML 5.5%
  • CSS 0.2%