Git Product home page Git Product logo

image-processing-and-enhancement-software's Introduction

GRIME: Graphical Image Manipulation and Enhancement

Welcome to GRIME, an advanced image manipulation and enhancement software developed using Java Swing and built on robust design principles. This software empowers users to manipulate and enhance images with ease.

Screenshot

Usage

To get hands on and start using the software, follow USEME.md

  1. Running the Program: Navigate to src/Main and execute the static main method in the Main file.
  2. Commands: Use text-based commands to interact with the software. Refer to the USEME.md file for detailed command usage.

Features

  • Graphical User Interface (GUI): Built with Java Swing, providing an intuitive interface for image manipulation.
  • Flexible File Handling : Supports popular image formats such as PPM, PNG, JPG, and BMP. Allows users to specify the image to be loaded and saved, ensuring versatility in file handling.
  • Image Operations: Offers a wide array of operations including brightening, darkening, flipping, greyscale, sepia, blurring, sharpening, and dithering.
  • Live Histogram: Provides a real-time histogram displaying red, green, blue, and intensity components.
  • Error Handling: Displays error messages for any encountered issues during operations, ensuring a smooth user experience.

Architecture Overview

MVC Design Pattern

  • Model: Represents data and its operations, handling image manipulation and enhancement.
  • Controller: Interacts with users, coordinating between the model and the view.
  • View: Utilizes Java Swing to provide a graphical interface for user interaction.

Factory Method for File Types Support

The software incorporates a Factory Method design pattern to support multiple file types for image loading and saving operations. The ImageIOLoader and ImageIOSaver classes effectively utilize this pattern, allowing the software to handle diverse image formats such as JPG, PNG, and BMP seamlessly.

Strategy and Facade Design Patterns for Image Processing

The software's extensible image processing effects and filters are implemented using Strategy and Facade design patterns. Initially starting with basic functionalities like Blur and Sharpen, the architecture employed these patterns to pave the way for future enhancements.

  • Strategy Pattern: The MatrixFilter class leverages this pattern, offering a flexible approach for applying various image filters by accepting different matrices (kernels).
  • Facade Pattern: Implemented through the ColorTransformer class, this pattern encapsulates complex color transformation operations, such as Sepia and Dithering, simplifying their usage and ensuring seamless integration within the software.

The utilization of these design patterns not only broadened the scope of available features but also laid a robust foundation for incorporating new filters and operations efficiently.

Adapter Design for MVVM Integration

To facilitate the integration of MVVM architecture within the system, an Adapter design pattern was employed in the view model. This adaptation between the model and view layers enhances the software's architecture by establishing seamless interaction.

  • View Model Adapter: The new View Model design, serving as an adapter, accesses the primary model and presents processed data required by the view. Its interface allows for easy extension or implementation of future adapters to support evolving view requirements.

By incorporating the Adapter design, the software extends its capability to integrate modern architectural paradigms while maintaining a streamlined interaction between the model and view components.

Packages Overview

  • ime: The initial version of the software, implementing image manipulation using text-based commands in a Model-View-Controller architecture.
  • mime: An improved version building upon the previous design, adding extensive functionality, flexibility in file handling, and a GUI using Java Swing.
  • Additional Packages: Detailed implementations for image loading, saving, filtering, and command-based functionalities.

Development Process

The complete development process is documented in DEVELOPMENT.md

image-processing-and-enhancement-software's People

Contributors

gsakshay avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

meimingle

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.