Image Transcoder is a Node.js-based project designed to encode and decode binary data into images and vice versa. It leverages libraries like sharp
for image processing and provides a modular, worker-thread-based architecture for efficient parallel processing of files.
- Binary to Image Conversion: Converts binary data into images using a custom color mapping system.
- Image to Binary Conversion: Decodes images back into binary data, supporting file reconstruction.
- Parallel Processing: Utilizes worker threads to process multiple files simultaneously for improved performance.
- Customizable Output: Supports flexible image dimensions and output directories.
- File Metadata Encoding: Encodes file names and metadata into images for easy identification during decoding.
- Error Handling: Includes robust error handling for file operations and processing.
-
Clone the repository:
git clone https://github.com/mrFavoslav/image-transcoder.git cd image-transcoder
-
Install dependencies:
npm install
To convert a binary file into images:
node main/ftb.js <input_file>
- Input: Specify the file or directory to be converted.
- Output: Images will be saved in the
out
directory.
To decode images back into binary files:
node main/btf.js
- Input: Images from the
out
directory. - Output: Decoded files will be saved in the
output
directory.
-ct
: Clears the temporary folder before processing.-co
: Clears the output folder before processing.
main/
: Contains the main scripts for binary-to-image (ftb.js
) and image-to-binary (btf.js
) conversion.workers/
: Includes worker scripts for parallel processing (imageWorker.js
,progressWorker.js
).OLD/
: Legacy scripts and files for reference.out/
: Stores generated images during binary-to-image conversion.output/
: Stores reconstructed files during image-to-binary conversion.temp/
: Temporary storage for intermediate files.
The project uses the following Node.js libraries:
- sharp: For image processing.
- fs-extra: For enhanced file system operations.
- prompt-sync: For command-line input.
- worker_threads: For parallel processing.
To view all dependencies, check the package.json
file.
- File Reading: Reads the binary data from the input file.
- Nibble Conversion: Splits each byte into two 4-bit nibbles.
- Color Mapping: Maps each nibble to a specific RGB color.
- Image Generation: Creates images with the encoded data and saves them in the
out
directory.
- Image Decoding: Reads images from the
out
directory. - Color Matching: Matches pixel colors to their corresponding nibbles.
- Binary Reconstruction: Reconstructs the binary data and saves the output files in the
output
directory.
node main/ftb.js example.txt
- Input:
example.txt
- Output: Images in the
out/
directory.
node main/btf.js
- Input: Images from the
out/
directory. - Output: Reconstructed files in the
output/
directory.
Contributions are welcome! If you have ideas for improvements or find any issues, feel free to open an issue or submit a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.
Created with ❤️ by Ondřej Chmelíček (a.k.a. Favoslav_).
Check out more about me on my website.