vcvj is a .NET 8.0 (C#) framework for tokenizing and transforming GIF files.
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!
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();
- Altering color tables
vcvj.DataStream.LogicalScreen.GlobalColorTable.XOR(50);
vcvj.DataStream.LogicalScreen.GlobalColorTable.XOR(100);
vcvj.DataStream.LogicalScreen.GlobalColorTable.Randomize();
vcvj.DataStream.LogicalScreen.GlobalColorTable.RandomizeHalf();
- Glitching them out beyond comprehension and effectively destroying them
vcvj.DataStream.DeleteRandomCompiledBytes(75000);
(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:)
- And more!
To configure and run vcvj:
- Create copies of the
app.config.example
files in thevcvj
andvcvj.Tests
projects, name them bothapp.config
, and set the constants (such asWorkingDirectory
) as-needed. - Compile and build the solution.
To generate modified GIFs on-the-fly, run the unit tests located in the vcvj.Tests
project.