GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - OzzyMitchell/tinycodec: A very fast, tiny lossless image codec

BranchesTags
Open more actions menu

Latest commit

 

History

18 Commits
18 Commits

Folders and files

NameName
Last commit message
Last commit date
benchmarks
benchmarks
 
 
third_party
third_party
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
CMakeLists.txt
CMakeLists.txt
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
benchmark.cmd
benchmark.cmd
 
 
tcom.c
tcom.c
 
 
tcom_dependency.c
tcom_dependency.c
 
 
tcom_readable.c
tcom_readable.c
 
 

Repository files navigation

TinyCodec

A very fast, tiny lossless image codec.

CLI

Use pack to encode and unpack to decode. unpack decodes into a png by default.

tcom pack image.png
tcom unpack image.tcom

The CLI supports PNG, BMP, PNM/PAM, and QOI. Give unpack an output filename to choose the format by extension.

The Windows CMake build uses clang-cl, libpng, and zlib. Set -DTCOM_READABLE=ON to build with the readable implementation instead.

Benchmarks

  • Windows x64 — Drop an image or folder onto benchmark.cmd, or open it and paste the path.
  • Linux x64 (glibc 2.31+) — From the project folder, run sh benchmarks/linux/benchmark.sh and paste the path.

fpng requires SSE4.1.

Use the extracted 640-image ZIP or the full corpus folder, then press Enter through the prompts. Download the ZIP (487 MB)

Both runs used a 9950x3d with one thread and one repetition per image.

640 image set

There are 20 images in each of the 32 categories, covering photographs, textures, scanned maps, manuscripts, transparent icons, UI controls, and pixel art. This set totals 1.108 gigapixels.

Codec Total size (MB) Encode (s) Encode (MP/s) Decode (s) Decode (MP/s)
Reference QOI (qoi.h) 1685.70 6.07 182.47 5.31 208.71
TCOM 1534.76 5.45 203.34 4.40 251.74
QOIR 1565.47 5.64 196.66 5.15 215.24
fpng single pass 1850.09 3.27 339.27 6.13 180.87
libpng level 1 1543.76 46.69 23.74 13.55 81.81

Results and run details · Per-image CSV · 640 image manifest and licenses

17,660 images

The full corpus totals 21.63 gigapixels across 32 categories, including photos, textures, aerial imagery, UI, scans, and graphics.

Codec Total size (GB) Encode (s) Encode (MP/s) Decode (s) Decode (MP/s)
TCOM 16.488 65.98 327.76 56.53 382.57
Reference QOI (qoi.h) 17.605 80.66 268.14 64.37 335.97
QOIR 16.056 71.30 303.31 70.08 308.60
fpng single pass 19.643 55.29 391.15 75.24 287.46
libpng level 1 15.628 622.04 34.77 168.15 128.62

Results and run details · Per-image CSV · Corpus manifest

Copyright 2026 Ozzy M. Licensed under Apache 2.0.

About

A very fast, tiny lossless image codec

Resources

Readme
Apache-2.0 license
Activity

Stars

9 stars

Watchers

0 watching

Forks

1 fork
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.