Generate a pseudo-random color bmp image of size

Assignment Help Computer Engineering
Reference no: EM132101280

PLS USE C++

Your program will generate a pseudo-random color BMP image of size and location as specified by the user.

Your program will use a maximum size of 512x512.

Ask the user to enter the horizontal and vertical size (e.g. M and N) notifying the user of the maximum size allowable.

Prompt the user for the output filename with a bmp extension where the image is to be stored (in the directory from which your program is run).

Generate the correct size image and store a valid pseudo-random color BMP image file at the specified file location.

Use your program from the programming assignment on the previous HW as a starting point.

Use the rand() function to generate the random BGR values 0-255.

Seed the rand() function using the srand() function with the argument of srand( ) being the time-of-day obtained from your computer using the following syntax. The statement is

srand((unsigned int)time(NULL));

You will need to include in your preprocessor commands the line

#include<time.h> in order to use the function call time(NULL).

The new piece of information about the BMP file format that you will need to implement in this project is the BMP requirement that the image data for each row of image pixels must occupy an integer number of 4-bytes. For example, if the image is (width,height)=(3,4), each row of the image is 3 pixels, whose BGR values occupy (3)(3)=9 bytes.

bytes 3-6   (4) (Size)


total # bytes in

BMP image-

file=102

64, 0, 0, 0

LeastSigByte 1st; MostSigByte last






bytes 5-8   (4) (Width)


Image-width in pixels=3


3, 0, 0, 0

LSByte 1st

bytes 9-12 (4) (Height)


Image-height in pixels=4


4, 0, 0, 0

LSByte 1st






bytes 21-24    (4) (ImageDatasize)


Total # bytes in

imagedata =48


48, 0, 0, 0

LSByte 1st








But since the image data for each image row of a BMP image must occupy an integer number of 4-byte words, you will have to pad 12-9=3 bytes of zeroes to the end of the image data for each and every row. Therefore, the size of the BMP file is 14+40+(4)(12)=102 bytes.

The BITMAPFILEHEADER for the 3x4 BMP image would therefore have the value 102 in bytes 3-6 (Size). The BITMASPINFOHEADER would have Width=3 and Height=4

and ImageDataSize=(4)(12)=48

Let's, for example, use the integer width for the number of pixels in each row and the integer rowsize for the number of bytes in each image row.

If width=1, 1x3=3 bytes for BGR but rowsize=4.

If width=2, 2x3=6 bytes for BGR but rowsize=8.

If width=3, 3x3=9 bytes for BGR but rowsize=12.

If width=4, 4x3=12 bytes for BGR and rowsize=12.

So how do you compute rowsize given width?

If (3*width) %4=0, no zero-padding at the end of the 3*width bytes in an image row.

If (3*width) %4=1, zero-padding 3 additional bytes at the end of the 3*width bytes in the image row.

If (3*width) %4=2, zero-padding 2 additional bytes at the end of the 3*width bytes in the image row. If (3*width) %4=3, zero-padding 1 additional bytes at the end of the 3*width bytes in the image row.

Again,

IMPORTANT:

Recall, if you fprintf() the ascii character code (10) for newline '\n' into a file, fprintf(fp,"%c",10); the operating system will put 2-bytes into the file: carriage return (asci code 13) then linefeed (10). This is a problem, because the value for the red component of the 10th pixel in the image data is exactly value 10. No other value in the BITMAPFILEHEADER or BITMAPINFOHEADER has the value 10. To fix this, instead of setting the red component of the 10th pixel to 10, set it equal to 11.

If your program is written correctly, after you run your program, you can use your mouse to doubleclick on your output file and the default application for displaying images on your computer will display a pseudo-random color image.

PLS USE C++

Reference no: EM132101280

Questions Cloud

Write a matlab function that will take a set : You should use a loop in your function, since the function should be able to handle an unknown number of [a, b, k] values.
Declaration of the rights of man and of the citizen : What is the significance of the "Declaration of the Rights of Man and of the Citizen" in history?
Create a test java class called Banking : Write the class Banking that tests the transferTo method of Account class and print the results of accounts before and after transfer
Secession in the declarations of causes : What did the seceding southern states list as their primary reason for secession in the Declarations of Causes and Orders of Secession?
Generate a pseudo-random color bmp image of size : Prompt the user for the output filename with a bmp extension where the image is to be stored (in the directory from which your program is run).
Was communism in many ways no different : 1. Was Communism in many ways no different than Nazism? Discuss.
How did social darwinism play into german policy towards : How did Social Darwinism play into German policy towards the Jews and other subject peoples?
Write the java class Tunes that sorts the CD objects : Write the java class Tunes that sorts the CD objects by title of CD class in lexicographic order and print the ordered cd objects by title to console
Who is your favorite character in the hunger games : Can someone help me please with grammar and proofreading Who is your favorite character in The Hunger Games? Why?

Reviews

Write a Review

Computer Engineering Questions & Answers

  Mathematics in computing

Binary search tree, and postorder and preorder traversal Determine the shortest path in Graph

  Ict governance

ICT is defined as the term of Information and communication technologies, it is diverse set of technical tools and resources used by the government agencies to communicate and produce, circulate, store, and manage all information.

  Implementation of memory management

Assignment covers the following eight topics and explore the implementation of memory management, processes and threads.

  Realize business and organizational data storage

Realize business and organizational data storage and fast access times are much more important than they have ever been. Compare and contrast magnetic tapes, magnetic disks, optical discs

  What is the protocol overhead

What are the advantages of using a compiled language over an interpreted one? Under what circumstances would you select to use an interpreted language?

  Implementation of memory management

Paper describes about memory management. How memory is used in executing programs and its critical support for applications.

  Define open and closed loop control systems

Define open and closed loop cotrol systems.Explain difference between time varying and time invariant control system wth suitable example.

  Prepare a proposal to deploy windows server

Prepare a proposal to deploy Windows Server onto an existing network based on the provided scenario.

  Security policy document project

Analyze security requirements and develop a security policy

  Write a procedure that produces independent stack objects

Write a procedure (make-stack) that produces independent stack objects, using a message-passing style, e.g.

  Define a suitable functional unit

Define a suitable functional unit for a comparative study between two different types of paint.

  Calculate yield to maturity and bond prices

Calculate yield to maturity (YTM) and bond prices

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd