# zenithcodr/dct-image-compression architecture

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

- Interactive diagram: https://gitdiagram.com/zenithcodr/dct-image-compression
- Repository: https://github.com/zenithcodr/dct-image-compression

## Overview

This project is a teaching implementation of JPEG-style, lossy image compression and quality analysis—not a JPEG bitstream encoder. Users load an image through the CLI or Tkinter app, compress it at a selected quality, inspect a reconstruction and metrics, and optionally save a comparison grid; a benchmark capability sweeps quality settings to CSV. The graph follows the sampled CLI, pipeline, math, metrics and I/O code. The benchmark implementation was not sampled, so its documented capability is shown without speculative internal wiring.

Main entry points: [`pipeline/pipeline.py`](https://github.com/zenithcodr/dct-image-compression/blob/main/pipeline/pipeline.py) (Image pipeline), [`io_utils/io.py`](https://github.com/zenithcodr/dct-image-compression/blob/main/io_utils/io.py) (Image I/O), [`main.py`](https://github.com/zenithcodr/dct-image-compression/blob/main/main.py) (CLI demo), [`app/gui.py`](https://github.com/zenithcodr/dct-image-compression/blob/main/app/gui.py) (Tkinter app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User interfaces"]
  node_cli["CLI demo<br/>[main.py]"]
  node_gui["Tkinter app<br/>[gui.py]"]
  node_benchmark["Quality sweep"]
end

subgraph group_pipeline["Compression orchestration"]
  node_compress["Image pipeline<br/>[pipeline.py]"]
end

subgraph group_signal["Signal processing"]
  node_color["RGB / YCbCr<br/>[color.py]"]
  node_blocks["8×8 blocks<br/>[blocks.py]"]
  node_dct["DCT / IDCT<br/>[dct.py]"]
  node_quant["Quantization<br/>[quant.py]"]
end

subgraph group_analysis["Metrics and output"]
  node_image_io["Image I/O<br/>[io.py]"]
  node_metrics["Quality metrics<br/>[metrics.py]"]
end

node_cli_user(("CLI user"))
node_gui_user(("GUI user"))
node_bench_user(("Benchmark user"))
node_image_files["Image files"]
node_csv_output["Benchmark CSV"]
node_reconstruction["Reconstructed image"]
node_comparison["Comparison grid"]

node_cli_user -->|"runs"| node_cli
node_gui_user -->|"uses"| node_gui
node_bench_user -->|"runs"| node_benchmark
node_cli -->|"loads / saves"| node_image_io
node_cli -->|"compresses"| node_compress
node_cli -->|"builds grid"| node_image_io
node_gui -->|"loads / saves"| node_image_io
node_gui -->|"compresses"| node_compress
node_gui -->|"builds grid"| node_image_io
node_benchmark -->|"writes CSV"| node_csv_output
node_image_files -->|"reads / writes"| node_image_io
node_image_io -->|"returns image"| node_cli
node_image_io -->|"returns image"| node_gui
node_compress -->|"converts color"| node_color
node_compress -->|"splits / merges"| node_blocks
node_compress -->|"transforms"| node_dct
node_compress -->|"quantizes"| node_quant
node_compress -->|"measures quality"| node_metrics
node_compress -->|"returns result"| node_gui
node_compress -->|"returns result"| node_cli
node_image_io -->|"saves image"| node_reconstruction
node_image_io -->|"saves grid"| node_comparison

click node_cli "https://github.com/zenithcodr/dct-image-compression/blob/main/main.py"
click node_gui "https://github.com/zenithcodr/dct-image-compression/blob/main/app/gui.py"
click node_benchmark "https://github.com/zenithcodr/dct-image-compression/tree/main/benchmarks"
click node_image_io "https://github.com/zenithcodr/dct-image-compression/blob/main/io_utils/io.py"
click node_compress "https://github.com/zenithcodr/dct-image-compression/blob/main/pipeline/pipeline.py"
click node_color "https://github.com/zenithcodr/dct-image-compression/blob/main/pipeline/color.py"
click node_blocks "https://github.com/zenithcodr/dct-image-compression/blob/main/dct_core/blocks.py"
click node_dct "https://github.com/zenithcodr/dct-image-compression/blob/main/dct_core/dct.py"
click node_quant "https://github.com/zenithcodr/dct-image-compression/blob/main/dct_core/quant.py"
click node_metrics "https://github.com/zenithcodr/dct-image-compression/blob/main/quality/metrics.py"

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_cli,node_gui,node_benchmark,node_cli_user,node_gui_user,node_bench_user toneBlue
class node_compress toneAmber
class node_color,node_blocks,node_dct,node_quant toneMint
class node_image_io,node_metrics toneRose
class node_image_files,node_csv_output,node_reconstruction,node_comparison toneIndigo
```

## Components

### User interfaces

- [CLI demo](https://github.com/zenithcodr/dct-image-compression/blob/main/main.py): `main.py`
- [Tkinter app](https://github.com/zenithcodr/dct-image-compression/blob/main/app/gui.py): `app/gui.py`
- [Quality sweep](https://github.com/zenithcodr/dct-image-compression/tree/main/benchmarks): `benchmarks`

### Compression orchestration

- [Image pipeline](https://github.com/zenithcodr/dct-image-compression/blob/main/pipeline/pipeline.py): `pipeline/pipeline.py`

### Signal processing

- [RGB / YCbCr](https://github.com/zenithcodr/dct-image-compression/blob/main/pipeline/color.py): `pipeline/color.py`
- [8×8 blocks](https://github.com/zenithcodr/dct-image-compression/blob/main/dct_core/blocks.py): `dct_core/blocks.py`
- [DCT / IDCT](https://github.com/zenithcodr/dct-image-compression/blob/main/dct_core/dct.py): `dct_core/dct.py`
- [Quantization](https://github.com/zenithcodr/dct-image-compression/blob/main/dct_core/quant.py): `dct_core/quant.py`

### Metrics and output

- [Image I/O](https://github.com/zenithcodr/dct-image-compression/blob/main/io_utils/io.py): `io_utils/io.py`
- [Quality metrics](https://github.com/zenithcodr/dct-image-compression/blob/main/quality/metrics.py): `quality/metrics.py`

### Other components

- **CLI user**
- **GUI user**
- **Benchmark user**
- **Image files**
- **Benchmark CSV**
- **Reconstructed image**
- **Comparison grid**

## Connections

- CLI user → CLI demo: runs
- GUI user → Tkinter app: uses
- Benchmark user → Quality sweep: runs
- CLI demo → Image I/O: loads / saves
- CLI demo → Image pipeline: compresses
- CLI demo → Image I/O: builds grid
- Tkinter app → Image I/O: loads / saves
- Tkinter app → Image pipeline: compresses
- Tkinter app → Image I/O: builds grid
- Quality sweep → Benchmark CSV: writes CSV
- Image files → Image I/O: reads / writes
- Image I/O → CLI demo: returns image
- Image I/O → Tkinter app: returns image
- Image pipeline → RGB / YCbCr: converts color
- Image pipeline → 8×8 blocks: splits / merges
- Image pipeline → DCT / IDCT: transforms
- Image pipeline → Quantization: quantizes
- Image pipeline → Quality metrics: measures quality
- Image pipeline → Tkinter app: returns result
- Image pipeline → CLI demo: returns result
- Image I/O → Reconstructed image: saves image
- Image I/O → Comparison grid: saves grid
