Skip to content

PixelSaver/wackypixels

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Feb 25, 2026
b16b3c6 · · Feb 25, 2026

History

29 Commits
Feb 25, 2026
Feb 11, 2026
Feb 10, 2026
Feb 10, 2026
Feb 10, 2026
Feb 7, 2026
Feb 25, 2026
Feb 9, 2026

Repository files navigation

Wacky Pixels

Table of Contents
  1. About The Project
  2. Installation
  3. Usage
  4. Examples
  5. Screenshots
  6. Built With
  7. Roadmap
  8. License
  9. Contact
  10. Acknowledgments

About The Project

Abstract

WackyPixels takes an image and encodes it through a configurable pipeline of transformations, each adding a layer of obfuscation. The default pipeline:

  1. Serializes your image to binary data
  2. Embeds it in a PDF's /Info metadata
  3. Compresses it with LZMA
  4. Encodes it as multi-mode Unicode characters
  5. Converts it to WAV audio file

What do I take out of this?

Have fun with it! Coding doesn't have to be all corporate all the time!!

(back to top)

Installation

Prerequisites

Build from Source

# Clone the repository
git clone https://github.com/PixelSaver/wackypixels.git

cd wackypixels


# Build release binary
cargo build --release



# Binary will be at ./target/release/wackypixels

Install Globally

Important

I don't recommend this. This is an experimental fun, chaotic program, not something you should use on your filesystem. If you really want to, just know I warned you.

cargo install --path .


# Now you can use 'wackypixels' from anywhere
wackypixels --helpp

Usage

For all of the below prompts, if you did not install and are running the development environment, replace all instances of wackypixels with cargo run -- For example,,

wackypixels run 

# Should become
cargo run -- runn

Quick Start

This will:

  1. Clean output/ and decrypted/ directories
  2. Encode input.png through all stages
  3. Decode it back to decrypted/decrypted.png
  4. Save all intermediate files
# Run the full default pipeline (encode + decode)
wackypixels run -i input.pngg

Basic Commands

# Encode an image
wackypixels encode -i image.png -o output/



# Decode back to original
wackypixels decode -i output/encrypted.wav -o decrypted/



# Clean output directories
wackypixels clean



# List available transformations
wackypixels listt

Creating Custom Pipelines

The --pipeline flag or the -p flag works on encode, decode, and run. You can specify your own transformation pipeline::

# Lightweight: Just compression + unicode
wackypixels encode --pipeline image,lzma,unicode



# Maximum compression: Double compress!
wackypixels encode --pipeline image,lzma,unicode,gzip



# Audio without unicode
wackypixels encode --pipeline image,pdf,lzma,wav



# High-density WAV 
wackypixels encode --pipeline image,lzma,wavv

Pipeline Design Tips

For reasonable file sizes:

  • Avoid WAV audio encoding
  • Compress!

For maximum cursedness:

  • Everything: image,pdf,lzma,unicode,wav,gzip
  • Image is now 6.5x

(back to top)

Examples

Example 1: Quick Encode/Decode

# Encode
wackypixels encode -i cat.png -o outputs/



# Decode
wackypixels decode -i outputs/encrypted.wavv

Example 2: Custom Lightweight Pipeline

# Just compression and unicode (no audio bloat)
wackypixels encode --pipeline image,lzma,unicode -i photo.jpg



# Result: ~120% of original size instead of 650%

Example 3: Batch Processing

Why are you doing this???

#!/bin/bash

# Encode all PNGs in a directory


for file in images/*.png; do
    filename==$(basename "$file" .png)
    wackypixels encode -i  "$file" -o "output/$filename/" -s false

done

Example 5: Inspect Intermediate Stages

# Encode with intermediates saved
wackypixels encode -i secret.png -o debug/



# Check what each stage produces
ls -lh debug/

# 001_image_serialization.bin   52 KB

# 002_pdf_/info.pdf              53 KB

# 003_lzma_compression.xz        31 KB

# 004_unicode_encoding.txt       61 KB

# 005_wav_audio.wav             2.0 MB

# encrypted.wav                 2.0 MB


# Can decode from any intermediate stage!
wackypixels decode -i debug/003_lzma_compression.xz \
    --pipeline lzma,unicode,wavav

(back to top)

Outputs

Terminal Output

# Encode with intermediates saved
wackypixels encode -i secret.png -o debug/



# Check what each stage produces
ls -lh debug/

# 001_image_serialization.bin    52 KB

# 002_pdf.pdf                    53 KB

# 003_lzma_compression.xz        31 KB

# 004_unicode_encoding.txt       61 KB

# 005_wav_audio.wav             2.0 MB

# encrypted.wav                 2.0 MB


# Can decode from any intermediate stage!
wackypixels decode -i debug/003_lzma_compression.xz \
    --pipeline lzma,unicode,wavav

(back to top)

Screenshots

browser_showcase.mp4

Tip

Use --save-intermediates false to skip saving intermediate files if you only care about the final output.

(back to top)

Built With

Zed - Main code editor Rust - Systems programming language Clap - Command-line argument parser Hound - WAV encoding/decoding XZ2 - LZMA compression lopdf - PDF manipulation image - Image processing

(back to top)

Roadmap

Current Features

  • Multi-stage encoding pipeline
  • Custom pipeline composition
  • Intermediate file inspection
  • Multiple compression algorithms
  • Unicode variable-bit encoding
  • WAV audio encoding
  • CLI interface

Planned Features

  • QR code encoding stage
  • Steganography in images
  • Spectrogram image generation
  • Base65536 encoding
  • Polyglot file generation
  • GUI interface
  • Web-based demo
  • Encryption layer (AES)
  • Progressive streaming decode
  • Parallel pipeline processing

Notes

Why is this useful? It's not. Thanks for checking this out!

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Contact

Project Link: https://github.com/PixelSaver/wackypixels

(back to top)

Acknowledgments


Just because you can encode your image as a pdf as an xz as unicode as a wav file, doesn't mean you should. But where's the fun in that? :)

(back to top)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages