My objective is to create a simple program which can convert a given image or gif into a limited ascii or pixelart representation using reduced color palettes from archaic computers and video game consoles. While the truth is that I am creating this for my own enjoyment the "intended" user, should one need to be specified, are game development hobbyists looking to more easily convert images into a specialized graphics style evocative of a particular era of technology for the purpose of facilitating new age fun with a vintage feel. In reverse chronological order.
- Added driver-overview.pdf which is, unsuprisingly, an overview of the driver class. This class is the program's entry point and is the only way to specify images and modification options before program execution. A poor man's interface.
- Added Ordered dithering using 4x4 Bayer Matrix for color-palette reduction.
- Changed name from UselessGifTextGifConverter to PixelGraphicConverter as the old name is no longer accurate and also because I have been told that self-deprication is not an attractive trait in a man.
- Added Floyd-Steinberg dithering for color-palette reduction.
- Added alternate color palettes and color replacement options (64 color NES model and 15bit SNES model).
- Added different pixel replacement, resizing, and image generation options independent of ascii image generation.
- Added variable background colors for ascii gif generation along with transparency option.
- Removed necessity for intermediate file creation, only input file and output destination required.
- Added in program ability to expand gifs into frames and then recombine modified frames into sigular gif.
- Program no longer converts gifs into text files.
- Program no longer converts gifs into text files into gifs.
- Add additional console specific palette and pixeldepth conversion options.
- Original Gameboy 2bit green grayscale.
- Gameboy to Gameboy Color special color options (when placing GB cartridge into GBC).
- Atari 2600
- Microsoft Windows default 16 and 20 color palette.
- Apple Macintosh default 16 color palette.
- Add additional general pixeldepth conversion options.
- 2-bit monochrome
- 3-bit RGB
- 6-bit RGB
- 9-bit RGB
- 12-bit RGB
- 16-bit RGB
- Implement adaptive palette selection, optimized palette generation, color quantization etc.
- Median cut algorithm for 24bit RGB to 16-color palette.
- Kohenon net for automated palette optimization.
- Creation of 3D Voronoi diagram for subsequent color matching.
- Improve and expand dithering effects and options
- Ordered dithering using bayer matrices of variable size and pattern.
- Threshold dithering.
- Various organization and restructring to create more logical method interaction and reduced coupling.
- ditherFS() should be called after populateColoryArray() and act upon the array rather than the original image.
- Primary class ImageToText should be renamed to accurately reflect its current function rather than its archaic function.
- Various other methods should be renamed to accurately reflect their current functions.
- Place into new method commented out code responsible for creating ascii representations of images as text files.
- Improve image to ascii functionality.
- Non-arbitrary symbol choice.
- Reimplement option to create text file from image.
- Create algorithm for dynamic symbol placement based upon geometry of image.
- Second pass analysis of ascii method which modifies symbols based upon structure of current ascii representation.
- Optimization
- Identify and remove redundancy or unnecessary comparisons or actions left-over from previous project interations.
- Implement multithreading for populateColorArray() and convertToBlockGraphc(). Multithread where possible elswhere.
- Research and implement faster image creation and traversal techniques. Identify and address performance bottlenecks.
- Create simple GUI
- If possible, design to be accessed from and used in browser from website: www.positionovertime.com
- Create simple executable.
- Honestly, I have no idea what this entails. I know nothing about java tools for creating interactive graphics.