Skip to content

Latest commit

 

History

History
78 lines (50 loc) · 2.25 KB

File metadata and controls

78 lines (50 loc) · 2.25 KB

vcvj

Screenshot

A brief introduction

vcvj is a .NET 8.0 (C#) framework for tokenizing and transforming GIF files.

Tokenization

vcvj parses GIF files into semantic components defined by the wonderful and frightening gif89a spec - yielding a VcvjImage object which contains:

  • Data blocks
  • Graphic blocks
  • Table-based images
  • Application extensions
  • And more!

Transformation

Once the GIF is parsed into a VcvjImage object, the VcvjImage API is used to alter the image's grammatical components and save it back into a GIF, with features such as:

  • Randomizing image frames
vcvj.DataStream.RandomizeFrames();

Screenshot

  • Altering color tables
vcvj.DataStream.LogicalScreen.GlobalColorTable.XOR(50);

Screenshot

vcvj.DataStream.LogicalScreen.GlobalColorTable.XOR(100);

Screenshot

vcvj.DataStream.LogicalScreen.GlobalColorTable.Randomize();

Screenshot

vcvj.DataStream.LogicalScreen.GlobalColorTable.RandomizeHalf();

Screenshot

  • Glitching them out beyond comprehension and effectively destroying them
vcvj.DataStream.DeleteRandomCompiledBytes(75000);

Screenshot Screenshot Screenshot

(Note: If you're using Chrome or Firefox, you probably can't see the images above, because modern web browsers perform some kind of sanity check upon encountering malformed GIFs. Luckily, IE and MS Edge don't:)

Screenshot

  • And more!

Configuration

To configure and run vcvj:

  1. Create copies of the app.config.example files in the vcvj and vcvj.Tests projects, name them both app.config, and set the constants (such as WorkingDirectory) as-needed.
  2. Compile and build the solution.

To generate modified GIFs on-the-fly, run the unit tests located in the vcvj.Tests project.