You are here:

C++/c++ project!

Advertisement


Question
we made asoftware in c++ for sel evaluation test. i want to ask that how can i insert or put a image into it without drawing the image tell me brieffly if u have any idea about it?

Answer
Hi dear Jatinder Singh !

There is yet another option instead of drawing an image ! , If you have the raster data of a image in a file ( say let the  Image file be .BMP) then you can easily display the contents of the image file using appropriate C/C++ Program , make that all types of image files won't have same internal format !

Before working with image files you have to be familiar with the internal structures of the image file and how the image has been compressed !
Here ill present the sample code that will display the contents of the image file ( .BMP)

#include <alloc.h>
#include <conio.h>
#include <graphics.h>
#include <stdio.h>
#include <stdlib.h>


struct BMP
{
 char Type[2];          //File type. Set to "BM".
 unsigned long Size;     //Size in BYTES of the file.
 unsigned long Reserved;      //Reserved. Set to zero.
 unsigned long OffSet;   //Offset to the data.
 unsigned long headsize; //Size of rest of header. Set to 40.
 unsigned long Width;     //Width of bitmap in pixels.
 unsigned long Height;     //  Height of bitmap in pixels.
 unsigned int  Planes;    //Number of Planes. Set to 1.
 unsigned int  BitsPerPixel;       //Number of Bits per pixels.
 unsigned long Compression;   //Compression. Usually set to 0.
 unsigned long SizeImage;  //Size in bytes of the bitmap.
 unsigned long XPixelsPreMeter;     //Horizontal pixels per meter.
 unsigned long YPixelsPreMeter;     //Vertical pixels per meter.
 unsigned long ColorsUsed;   //Number of colors used.
 unsigned long ColorsImportant;  //Number of "important" colors.
};

int ShowBMP(int x, int y, char* FileName)
{
   int b,a;
   BMP Obj;

   unsigned char* Datas;
   int in=0;
   unsigned char c=0;
   FILE * fp;

   fp = fopen(FileName,"rb");
   if(!fp){
   printf("Error : Unable to open file ..");
   exit(0);
   }

   fread(&Obj, sizeof(Obj), 1, fp);
   if(Obj.BitsPerPixel!=4)  // This isn't a 16 color bmp we can read;
   {
    fclose(fp);
    printf("Error : File format not supported ..");
    exit(0);
   };
   fseek(fp,Obj.OffSet,SEEK_SET);
   Datas=(unsigned char*) calloc(Obj.Width/2+1, sizeof(unsigned char));
   for(b=Obj.Height;b>=0;b--)
   {
    fread(Datas, sizeof(unsigned char), Obj.Width/2, fp);
    c=0;
    in=0;
    for(a=0;a<=Obj.Width;a+=2)
    {
        c = (Datas[in] | 0x00) >>4;
        putpixel(a+x,b+y,c);
        c = (Datas[in] | 0xF0) & 0x0F;
        putpixel(a+1+x,b+y,c);
        in++;
    }
   }
   free (Datas);
   fclose(fp);
   return 1;
}
void main()
{
int color;
int gd , gm ;
gd = VGA ; gm = VGAHI;

initgraph(&gd,&gm,"");
ShowBMP(0,0,"tune.bmp");
getch();
closegraph();
}

Note:
 The program presented above is strictly compatible with Turbo C/C++ of any versions that support BGI.
 Here im unable to present you the bitmap file "sample.bmp"  , so i recommend you to crteate your own file to test this program !
 While creating your own file   make sure that the new (.BMP)  file should be compatible with this program ! other wise it ends with undesired results!

Thanks and Regards!
Prince M. Premnath .

C++

All Answers


Answers by Expert:


Ask Experts

Volunteer


Prince M. Premnath

Expertise

Years of research in C/C++ Will bring you all facts regarding , OOPS , SVGA , MOUSE , BIOS , IVT , Feel free to query me :-)

Experience

More than 5 years

Education/Credentials
MCA

©2016 About.com. All rights reserved.