A simple image processing tool that is capable of manipulating PPM3,PNG, JPG and BMP file
Structure: In model package
- Package: library
- ImageLibModel (interface, extend ReadOnlyImageLibModel)
- Can add stuff to the library
- ReadOnlyImageLibModel (interface)
- Can read the content of the library with key
- ImageLib (implements ImageLibModel)
- A class which acts like a hashmap for <String, ImageModel>, but with better management (ReadOnly model).
- ImageLibModel (interface, extend ReadOnlyImageLibModel)
- Package: image
- ReadOnlyImageModel (interface)
- Provides users with limited access to the ImageModel, that is, not being able to modify anything in the imageModel but can get information about it.
- ImageModel (extend ReadOnlyImageModel)
- Provides writable method to the users, acts like an interface which provides readable & writable permission.
- ReadOnlyImageModel (interface)
- Package: enums
- FlipDirection
- The flip direction that has been provided.
- GreyScaleValue
- The available component for grey scale operations.
- FilterType
- The available types of filter to be applied on an image.
- FlipDirection
- Package: filter
- IFilter (interface)
- Provide necessary public method to apply the filter to the given 2d array of image data and generate a new 2d array after operation.
- IFilterImpl (implements IFilter)
- The class takes in a filter kernel in the constructor, and only public method is to apply the filter operation to the given image data.
- IFilter (interface)
- Package: feature
- FeatureCommand (interface)
- Provide necessary public method for all features as a function object that can be applied to the provided image data.
- Package: basics
- ChangeBrightness (implements FeatureCommand)
- Change the brightness of the image by given value.
- Flip (implements FeatureCommand)
- Flip the image by the given flip direction.
- GreyScale (implements FeatureCommand)
- Basic operations of grey scale can use R, G, B, Intensity, Luma or average Value.
- ChangeBrightness (implements FeatureCommand)
- Package: pro
- Filter (implements FeatureCommand)
- Filter the image by specific filter kernel, can be either blur or sharpen.
- ProGreyScale (implements FeatureCommand)
- Advanced operations of grey scale can use the Alpha value or convert to Sepia tone.
- Mosaic (implements FeatureCommand)
- Create randomly generated mosaic effect with given number of seeds.
- Filter (implements FeatureCommand)
- FeatureCommand (interface)
Structure: In controller package
- Package: commands
- IMECommand (interface)
- Provides the execute command which accepts an ImageLibModel.
- ABSCommand (abstract class which implements IMECommand)
- Provides common filed required for implementation of IMECommand.
- Brighten, Flip, Load, Save, ComponentGreyScale
- Concrete classes which extends ABSCommand, which are the currently supported command (called by the controller).
- IMECommand (interface)
- IMEController (interface)
- Provides one function which initialize the program and process the input.
- IMEControllerBasic
- The basic version of IMEController which supports rgb, luma, value, intensity greyscale, brighten, flip, load and save. = IMEControllerPro
- Pro version of IMEController, with additional feature like blur, alpha-component, sharpen and sepia greyscale.
Structure: In view package
- ImageProcessorView (interface)
- ImageProcessorViewImpl
- The implementation of ImageProcessorView, which only pass message to the given appendable object.
- ImageProcessorGUIViewImpl
- Implementation of ImageProcessorView, which respond the gui display and action listener.
- HistogramPanel (concrete class)
- Inheriting the JPanel, has a constructor that takes in an int[][] in order to draw the line chart as the histogram.
Structure: In utils package
- ControllerUtils (concrete class)
- Contains method that are useful to controller.
- ImageUtil (concrete class)
- Contains method that are useful to model and method related to IO.
ImageProcessor
- Contains the main method which takes in arguments to initialize the program accordingly, provide --help as arguments to see the help message (would be outputted on system.out)
Please see USEME.md in the root directory.
https://twitter.com/kyubumlee/status/1406091569854357509?s=20
Has been converted to PPM3 and cropped everything other than the center part of the picture to reduce the size