Image Format Transmuter is a command-line tool (CLI) tool for converting images between file formats.
It currently supports the following formats:
- PNG (As input and output)
- BMP (As input and output)
This project was made as a learning exercise to improve my C++ skills and gain insights into various formats and their associated algorithms. Consequently, I am implementing as much of the codecs as possible, with the exception of those algorithms whose implementation are either well-standarized (e.g., CRC) or could make for their own project due to their complexity (e.g., deflate/inflate).
Note: The program was developed with Linux as the target operating system. As a result, it may or may not work on Windows or macOS computers.
To use the program, run the executable in the CLI with the following structure:
./imageTransmuter "input file name" -f "input file format" -t "output file format"
Mandatory flags:
-f, --from Sets the input file format
-t, --to Sets the output file format
Optional flags:
-o, --output Sets the output file name
-c, --color Sets the output color type (Usually defaulted to the input color type)
--version Displays the installed version of the program and exits
-h, --help Displays information about the flags and accepted formats/colors
The project uses CMake for its build system, so it can basically be build anywhere on the system. However, I personally recommend creating a new directory to keep the build files organized.
mkdir build
cd build
Once inside the building directory, run cmake
pointing to these project base directory.
cmake "path/to/Image-Format-Transmuter"
Finally, you compile the project using the make
command in the building directory.
make
- zlib (Tested with version 1.3)
Image Format Transmuter its currently in version 0.6.0.
To reach version 1.0.0, it should have support for at least the PNG, JPG and BMP formats, both for encoding and decoding. With special emphasis in the decoding process, since it should allow any images with these extensions.
- JPG encoder
- Decoding PNG images with interlacing
- Support for more formats (WebP, TIFF, QOI, etc.)
- Encoding PNG images with interlacing
- Config files and additional flag options
- Using OpenGL or BLAS libraries to optimize PNG encoding