Digital images are used in many places by a wide variety of users: graphic designers, web authors, digital camera users and so on. Image editing software normally allows users to modify images one at a time.
In many situations the same modifications must be made to a set of images, and dealing with the images one by one is inefficient. Some software applications allow users to process multiple images, by automatically applying a sequence of modifications to each image in turn. This is often called 'batch processing.'
## Deliverables
**Application Requirements**
Write a *VB .NET* application that:
**1. Provides the functionality to perform batch modifications of a set of one or more images:**
?So that I can:
- select one or more image files as the set to be modified
?- select a destination folder where the modified image files will be saved to
?- select a macro file that defines the sequence of modifications applied to each image
?- the modified images produced by the application should be identical to those that would be produced in the sequence of operations was carried out manually
?- produce a textual record (a log file) of its operation
? **The image editing operations should include:**
o all the rotations and flip operations in RotateFlip method/enumeration
o conversion between any one of four image formats (jpg, gif, png, bmp)
o image resizing
o one colour-related operation
o one other graphical operation of your choice
**The application should be flexible and robust enough to allow the easy addition (or deletion) of operations, i.e. if someone writes the code for a new operation there will be a *small* (or zero!) number of changes to your code to make the new operation code work**
** **
**2. Provide an *appropriate* graphical user interface for the user to access the functionality**
The focus of the interface design for this application is feedback/responsiveness. Initially the interface requirements may seen quite simple: let the user select a set of image files; let the user select a destination folder; and let the user select a macro file.
However, if the application provides no further information it will be difficult for the user to determine how much progress has been made in the batch processing, how long it will take to complete processing, whether the modifications to the images are what they required, whether any problems were encountered during processing and so on.
**Some things to consider:**
? - reporting progress to the user
? - allowing the user to pause or halt the processing
? - giving the user some way to determine whether they have selected the correct macro (perhaps they could preview the effect of a macro on a single image)