# aravkataria/pyramid-compression architecture

> Architecture diagram of the GitHub repository aravkataria/pyramid-compression, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-24). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/aravkataria/pyramid-compression
- Repository: https://github.com/aravkataria/pyramid-compression

## Overview

Pyramid Compression is a local image-processing tool with a browser workspace and Python command-line options. Users load an image, choose compression levels or reconstruction mode, then inspect and save the result; the Python tools also preserve compression metadata and support a combined round trip with a quality report. The browser workflow and Python paths are supported by the README and sampled source; unsampled HTML and Python sections limit finer wiring details.

Main entry points: [`compressor.py`](https://github.com/aravkataria/pyramid-compression/blob/main/compressor.py) (Compressor CLI), [`decompressor.py`](https://github.com/aravkataria/pyramid-compression/blob/main/decompressor.py) (Decompressor CLI), [`script.js`](https://github.com/aravkataria/pyramid-compression/blob/main/script.js) (Browser Controls), [`main.py`](https://github.com/aravkataria/pyramid-compression/blob/main/main.py) (Unified Pipeline)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Browser Workspace"]
  node_page["Workspace Page<br/>[index.html]"]
  node_browser["Browser Controls<br/>[script.js]"]
  node_browser_image["Image Loading<br/>[script.js]"]
  node_browser_download["PNG Downloads<br/>[script.js]"]
  node_theme["Theme Styles<br/>[style.css]"]
  node_web_canvas["Canvas Results<br/>[script.js]"]
end

subgraph group_cli["Python Tools"]
  node_unified["Unified Pipeline<br/>[main.py]"]
  node_compressor["Compressor CLI<br/>[compressor.py]"]
  node_decompressor["Decompressor CLI<br/>[decompressor.py]"]
end

subgraph group_processing["Image Processing"]
  node_browser_process["Canvas Processing<br/>[script.js]"]
  node_browser_quality["PSNR Display<br/>[script.js]"]
  node_main_pixels["Pipeline Pixel Ops<br/>[main.py]"]
  node_compress_pixels["Downsampling<br/>[compressor.py]"]
  node_decompress_pixels["Reconstruction<br/>[decompressor.py]"]
  node_metadata["Metadata Sidecar<br/>[compressor.py]"]
end

node_user(("User"))
node_python_user(("Terminal User"))
node_local_images["Local Image Files"]

node_user -->|"opens"| node_page
node_page -->|"loads"| node_browser
node_user -->|"selects image"| node_browser
node_browser -->|"dispatches file"| node_browser_image
node_browser_image -->|"passes image"| node_browser_process
node_browser -->|"sets options"| node_browser_process
node_browser_process -->|"renders results"| node_web_canvas
node_browser_process -->|"updates score"| node_browser_quality
node_user -->|"requests export"| node_browser_download
node_browser_download -->|"exports PNG"| node_web_canvas
node_user -->|"chooses theme"| node_theme
node_python_user -->|"runs pipeline"| node_unified
node_python_user -->|"runs compressor"| node_compressor
node_python_user -->|"runs decompressor"| node_decompressor
node_local_images -->|"provides image"| node_unified
node_local_images -->|"provides image"| node_compressor
node_local_images -->|"provides image"| node_decompressor
node_unified -->|"processes pixels"| node_main_pixels
node_compressor -->|"compresses image"| node_compress_pixels
node_decompressor -->|"reconstructs image"| node_decompress_pixels
node_compressor -->|"writes dimensions"| node_metadata
node_metadata -->|"provides levels"| node_decompressor
node_unified -->|"saves outputs"| node_local_images
node_compressor -->|"saves compressed"| node_local_images
node_decompressor -->|"saves reconstructed"| node_local_images

click node_page "https://github.com/aravkataria/pyramid-compression/blob/main/index.html"
click node_browser "https://github.com/aravkataria/pyramid-compression/blob/main/script.js"
click node_browser_image "https://github.com/aravkataria/pyramid-compression/blob/main/script.js"
click node_browser_process "https://github.com/aravkataria/pyramid-compression/blob/main/script.js"
click node_browser_quality "https://github.com/aravkataria/pyramid-compression/blob/main/script.js"
click node_browser_download "https://github.com/aravkataria/pyramid-compression/blob/main/script.js"
click node_theme "https://github.com/aravkataria/pyramid-compression/blob/main/style.css"
click node_unified "https://github.com/aravkataria/pyramid-compression/blob/main/main.py"
click node_compressor "https://github.com/aravkataria/pyramid-compression/blob/main/compressor.py"
click node_decompressor "https://github.com/aravkataria/pyramid-compression/blob/main/decompressor.py"
click node_main_pixels "https://github.com/aravkataria/pyramid-compression/blob/main/main.py"
click node_compress_pixels "https://github.com/aravkataria/pyramid-compression/blob/main/compressor.py"
click node_decompress_pixels "https://github.com/aravkataria/pyramid-compression/blob/main/decompressor.py"
click node_metadata "https://github.com/aravkataria/pyramid-compression/blob/main/compressor.py"
click node_web_canvas "https://github.com/aravkataria/pyramid-compression/blob/main/script.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_page,node_browser,node_browser_image,node_browser_download,node_theme,node_web_canvas,node_user,node_python_user toneBlue
class node_unified,node_compressor,node_decompressor toneAmber
class node_browser_process,node_browser_quality,node_main_pixels,node_compress_pixels,node_decompress_pixels,node_metadata toneMint
class node_local_images toneIndigo
```

## Components

### Browser Workspace

- [Workspace Page](https://github.com/aravkataria/pyramid-compression/blob/main/index.html): `index.html`
- [Browser Controls](https://github.com/aravkataria/pyramid-compression/blob/main/script.js): `script.js`
- [Image Loading](https://github.com/aravkataria/pyramid-compression/blob/main/script.js): `script.js`
- [PNG Downloads](https://github.com/aravkataria/pyramid-compression/blob/main/script.js): `script.js`
- [Theme Styles](https://github.com/aravkataria/pyramid-compression/blob/main/style.css): `style.css`
- [Canvas Results](https://github.com/aravkataria/pyramid-compression/blob/main/script.js): `script.js`

### Python Tools

- [Unified Pipeline](https://github.com/aravkataria/pyramid-compression/blob/main/main.py): `main.py`
- [Compressor CLI](https://github.com/aravkataria/pyramid-compression/blob/main/compressor.py): `compressor.py`
- [Decompressor CLI](https://github.com/aravkataria/pyramid-compression/blob/main/decompressor.py): `decompressor.py`

### Image Processing

- [Canvas Processing](https://github.com/aravkataria/pyramid-compression/blob/main/script.js): `script.js`
- [PSNR Display](https://github.com/aravkataria/pyramid-compression/blob/main/script.js): `script.js`
- [Pipeline Pixel Ops](https://github.com/aravkataria/pyramid-compression/blob/main/main.py): `main.py`
- [Downsampling](https://github.com/aravkataria/pyramid-compression/blob/main/compressor.py): `compressor.py`
- [Reconstruction](https://github.com/aravkataria/pyramid-compression/blob/main/decompressor.py): `decompressor.py`
- [Metadata Sidecar](https://github.com/aravkataria/pyramid-compression/blob/main/compressor.py): `compressor.py`

### Other components

- **User**
- **Terminal User**
- **Local Image Files**

## Connections

- User → Workspace Page: opens
- Workspace Page → Browser Controls: loads
- User → Browser Controls: selects image
- Browser Controls → Image Loading: dispatches file
- Image Loading → Canvas Processing: passes image
- Browser Controls → Canvas Processing: sets options
- Canvas Processing → Canvas Results: renders results
- Canvas Processing → PSNR Display: updates score
- User → PNG Downloads: requests export
- PNG Downloads → Canvas Results: exports PNG
- User → Theme Styles: chooses theme
- Terminal User → Unified Pipeline: runs pipeline
- Terminal User → Compressor CLI: runs compressor
- Terminal User → Decompressor CLI: runs decompressor
- Local Image Files → Unified Pipeline: provides image
- Local Image Files → Compressor CLI: provides image
- Local Image Files → Decompressor CLI: provides image
- Unified Pipeline → Pipeline Pixel Ops: processes pixels
- Compressor CLI → Downsampling: compresses image
- Decompressor CLI → Reconstruction: reconstructs image
- Compressor CLI → Metadata Sidecar: writes dimensions
- Metadata Sidecar → Decompressor CLI: provides levels
- Unified Pipeline → Local Image Files: saves outputs
- Compressor CLI → Local Image Files: saves compressed
- Decompressor CLI → Local Image Files: saves reconstructed
