Instruction Imagelibh Imageliblib Code Image Provided Instructor C Language Code Ve Done Q43838657
The instruction is below. The ImageLib.h and ImageLib.lib arecode for an image provided by the instructor. C++ LANGUAGE

Here is the code that I’ve done so far.
#include
#include “ImageLib.h”
// forward declarations
void newImage(image in);
void changePicColor(pixel& p, int row, int col);
void mirrorPic(image img);
// main()
// Preconditions: test1.gif exist and is a valid GIF file.
// Postconditions: output.gif will written and it will contain themirror image of test1.gif
// with different colors.
int main() {
// Read the test image test1.gif
image input = ReadGIF(“test1.gif”);
if (input.rows == 0) {
cout << “Unable to open file:test1.gif” << endl;
return -1;
}
// create image with different colors
newImage(input);
// output results
WriteGIF(“output.gif”, input);
// wait for user input before exiting
system(“PAUSE”);
DeallocateImage(input);
return 0;
}
// newImage: modifies the input image to produce different colorimage
// Preconditions: the input image (in) has in.rows * in.cols pixelallocated
// Postconditions: the input image is modified as instructed in theassignment page
void newImage(image in) {
for (int row = 0; row < in.rows; row++) {
for (int col = 0; col < in.cols;col++) {
changeColor(in.pixels[row][col], row, col);
}
}
}
// changePicColor: change the color of a single pixel
// Preconditions: None
// Postconditions: The blue color band is change as (color – (rownumber % 7)), and the red
// color band is change as(color + (col number % 9)), green color stays the same
void changePicColor(pixel& p, int row, int col) {
p.blue = p.blue – (row % 7);
p.red = p.red + (col % 9);
// making sure the bytes are not underflowing oroverflowing
if (p.blue < 0) {
p.blue = 0;
}
else if (p.blue > 255) {
p.blue = 255;
}
if (p.red < 0) {
p.red = 0;
}
else if (p.red > 255) {
p.red = 255;
}
}
// mirrorPic:
// Preconditions:
// Postconditions: the input image is mirrored.
void mirrorPic(image img) {
}
I’ve done everything until 7b, and I’m not sure how to approachthe rest of the problem. We are still using the basic to C++ toanswer this question so we aren’t allowed to answer it withadvanced material that we haven’t been taught yet.
Below is the ImageLib.h file that the instructor gave us’
/* This file describes the interface to the ImageLib library
/* for use by students in CSS 501. This library provides
/* functionality to read/write GIF images and process themin
/* memory using a procedural style.
/*
/*****************************************************************/
#pragma once
#include <string>
using namespace std;
/*
* Type definitions
*/
typedef unsigned char byte; // A single byte of data
typedef struct { // A pixel stores 3 bytes of data:
byte red; // intensity of the red component
byte green; // intensity of the green component
byte blue; // intensity of the blue component
} pixel;
// A simple image data structure:
// rows is the height of the image (the number of rows ofpixels)
// cols is the width of the image (the number of columns ofpixels)
// pixels is a 2D array of the image pixels
// The first dimension of pixels varies from 0 to rows-1
// The second dimension of pixels varies from 0 to cols-1
// The pixel at row i and column j is accessed bypixels[i][j].
// With the following definition:
// image myimage;
// We could access the red component of the pixel at row 10,column 20 by:
// myimage.pixels[10][20].red
typedef struct {
int rows, cols; /* pic size */
pixel **pixels; /* image data */
} image;
/*
* Function prototypes
*/
/*
* ReadGIF:
* Preconditions: filename refers to a file that stores a GIFimage.
* Postconditions: returns the image contained in “filename”using the
* conventions described for the image type above.
* If the load is unsuccessful, returns an image with
* rows = 0, cols = 0, pixels = nullptr.
*/
image ReadGIF(string filename);
/*
* WriteGIF:
* Preconditions: filename is valid filename to store a GIFimage.
* inputImage holds an image using the conventions described
* for the image type above.
* Postconditions: inputImage is saved as a GIF image at thelocation
* specified by filename.
*/
void WriteGIF(string filename, image inputImage);
/*
* DeallocateImage:
* Preconditions: inputImage contains an image using theconventions
* for the image type described above.
* Postconditions: the memory allocated to the pixels ofinputImage has
* been deallocated. Also, the image values are set to:
* rows = 0, cols = 0, pixels = nullptr.
*/
void DeallocateImage(image &inputImage);
/*
* CopyImage:
* Preconditions: inputImage contains an image using theconventions
* for the image type described above.
* Postconditions: if sufficient memory is available, a copy ofinputImage
* is returned using newly allocated memory.
* Otherwise, the returned image has:
* rows = 0, cols =0 , pixels = nullptr.
*/
image CopyImage(image inputImage);
/*
* CreateImage:
* Preconditions: rows and cols describe the desired size of thenew image.
* Postconditions: if sufficient memory is available, a newimage
* is returned using newly allocated memory.
* Each pixel has red = 0, green =0, blue = 0.
* Otherwise, the returned image has:
* rows = 0, cols =0, pixels = nullptr.
*/
image CreateImage(int rows, int cols);
2. Create a new C++ project in Visual Studio called “Program1”. The project should and Empty C++ Project. If your project has stdafx.h or targetver.h, then you did this incorrectly. Your code should compile without these files and you should not turn them in. Remember where you save the project. 3. Download the following files and place them in …/Program 1/Program 1/: ImageLib.h , ImageLib.lib, ImageLib.pdb, test1.gif. You should not change the contents of these files in order to complete the assignment. 4. Examine ImageLib.h in order to understand the interface for reading and writing GIF images. You should not be able to access the implementation details of ImageLib.lib (this is abstraction, I am hiding the details). Note that images are not first-class objects. For example, there is no copy constructor or assignment operator that performs a deep copy. Functions are provided in the library for these purposes. 5. Add Imagelib.h and ImageLib.lib to your project. (Project – Add Existing Item.) 6. Create a new source file in Program1 called main.cpp (Project – Add New Item). We are now ready to start coding. 7. Edit main.cpp to accomplish the following in order: a. Read the image test1.gif. b. For every pixel of this image: i. Subtract row mod 7 from the blue component of the pixel, where row is the row of the current pixel. The mod operator uses the % symbol. ii. Add col mod 9 to the red component of the pixel, col is the column of the current pixel. iii. The green component should be unchanged. iv. As you are doing this, make sure to check for overflow and underflow, since bytes are unable to store values below 0 or above 255. If you find overflow, set the byte to 255. If you find underflow, set the byte to 0. c. Create a new image that is the mirror-image of the image from the previous step. (The left side and the right side are reversed.) d. Save the new image to a file called output.gif. e. Read output.gif back into a new image variable. f. Compare each pixel in the newly read image to the one that you saved in step d (not the original). Are there any differences? g. Count and output to the console the number of pixels that have a different values in red, green, or blue. (If a pixel has a difference in any of the three values, then that pixels counts once toward the count. A pixel cannot count more than once.) Show transcribed image text 2. Create a new C++ project in Visual Studio called “Program1”. The project should and Empty C++ Project. If your project has stdafx.h or targetver.h, then you did this incorrectly. Your code should compile without these files and you should not turn them in. Remember where you save the project. 3. Download the following files and place them in …/Program 1/Program 1/: ImageLib.h , ImageLib.lib, ImageLib.pdb, test1.gif. You should not change the contents of these files in order to complete the assignment. 4. Examine ImageLib.h in order to understand the interface for reading and writing GIF images. You should not be able to access the implementation details of ImageLib.lib (this is abstraction, I am hiding the details). Note that images are not first-class objects. For example, there is no copy constructor or assignment operator that performs a deep copy. Functions are provided in the library for these purposes. 5. Add Imagelib.h and ImageLib.lib to your project. (Project – Add Existing Item.) 6. Create a new source file in Program1 called main.cpp (Project – Add New Item). We are now ready to start coding. 7. Edit main.cpp to accomplish the following in order: a. Read the image test1.gif. b. For every pixel of this image: i. Subtract row mod 7 from the blue component of the pixel, where row is the row of the current pixel. The mod operator uses the % symbol. ii. Add col mod 9 to the red component of the pixel, col is the column of the current pixel. iii. The green component should be unchanged. iv. As you are doing this, make sure to check for overflow and underflow, since bytes are unable to store values below 0 or above 255. If you find overflow, set the byte to 255. If you find underflow, set the byte to 0. c. Create a new image that is the mirror-image of the image from the previous step. (The left side and the right side are reversed.) d. Save the new image to a file called output.gif. e. Read output.gif back into a new image variable. f. Compare each pixel in the newly read image to the one that you saved in step d (not the original). Are there any differences? g. Count and output to the console the number of pixels that have a different values in red, green, or blue. (If a pixel has a difference in any of the three values, then that pixels counts once toward the count. A pixel cannot count more than once.)
Expert Answer
Answer to The instruction is below. The ImageLib.h and ImageLib.lib are code for an image provided by the instructor. C++ LANGUAGE…
OR