Skip to content

This project is a GUI-Driven Text Compression application, showcasing Data Structures and Algorithms (DSA) and Object-Oriented Programming (OOP) concepts. Developed in Java and Python, it features Huffman coding, LZ77, and LZW algorithms, along with a user-friendly interface and Huffman tree visualization.

License

Notifications You must be signed in to change notification settings

DevaRajan8/GUI-Driven-Text-Compression

 
 

Repository files navigation

GUI Driven Text Compression

This project is a GUI-driven application for text compression, developed using both Java and Python. The primary focus of the project is to demonstrate the concepts of Data Structures and Algorithms (DSA) and Object-Oriented Programming (OOP).

Project Structure

The project consists of the following files:

  • Java Source Files:

    • compression.java - Handles the text compression logic.
    • CompressionRatio.java - Calculates the compression ratio.
    • FileChooserExample.java - Provides a GUI for file selection.
    • Huffman.java - Implements Huffman coding for compression.
    • Leaf.java - Represents a leaf node in the Huffman tree.
    • LZ77.java - Implements the LZ77 compression algorithm.
    • LZW.java - Implements the LZW compression algorithm.
    • Main.java - The main entry point of the application.
    • Node.java - Represents a node in the Huffman tree.
    • python.java - Integrates Python scripts with Java.
    • Triple.java - Utility class for the LZW algorithm.
  • Python Source Files:

    • Huffman_tree_visualisation.py - Visualizes the Huffman tree.
  • Configuration Files:

    • Requirments.txt - Lists the dependencies for the Python scripts.

Features

  • Huffman Coding: Efficient text compression using variable-length codes.
  • LZ77 Algorithm: Sliding window compression technique.
  • LZW Algorithm: Dictionary-based compression method.
  • GUI Interface: User-friendly interface for file selection and compression operations.
  • Visualization: Graphical representation of Huffman trees for better understanding.

Requirements

To run the Python scripts, ensure you have the required dependencies listed in Requirments.txt. You can install them using:

pip install -r Requirments.txt

How to Run

Follow these steps to run the application:

  1. Clone the Repository:

    git clone [your-repo-link]
  2. Navigate to the Project Directory:

    cd [project-directory]
  3. Compile the Java Files:

    javac *.java
    
  4. Run the Main Java Application:

    java Main

Contributing

We welcome contributions from the community to improve this project. To contribute, follow these steps:

  1. Fork the repository.
  2. Create a new branch (git checkout -b feature/improvement).
  3. Make your changes and commit them (git commit -am 'Add new feature').
  4. Push to the branch (git push origin feature/improvement).
  5. Create a new Pull Request.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Acknowledgments

Thank you for utilizing the GUI-Driven Text Compression project! We trust that it will enrich your experience in exploring text compression techniques and applications.

Contact

For any inquiries or feedback, feel free to contact us:


About

This project is a GUI-Driven Text Compression application, showcasing Data Structures and Algorithms (DSA) and Object-Oriented Programming (OOP) concepts. Developed in Java and Python, it features Huffman coding, LZ77, and LZW algorithms, along with a user-friendly interface and Huffman tree visualization.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 90.2%
  • Python 9.8%