mihaispr
Administrator
 Inregistrat: acum 18 ani
Postari: 2142
|
|
#include <stdio.h> #include <conio.h> #include <graphics.h> #include "svga.h"
typedef int Operator[3][3];
int gdriver, gmode; int ImageWidth,ImageHeight; char FileName[128]; Operator DeltaR={{0,-1,0},{0,1,0},{0,0,0}};
extern "C" void _Cdecl svga_driver(void); void LoadBitmap(int x,int y,char *nume); void ApplyOperator(Operator op);
int main(void) {
printf("Alegeti un fisier .bmp 256color: " ); scanf("%s",FileName);
/* install the user defined driver into the system */ gdriver = installuserdriver("svga", NULL);
/* register the driver with the graphics system */ registerbgidriver(svga_driver);
/* initialize graphics and local variables */ initgraph(&gdriver, &gmode, "" ); setgraphmode(SVGA_640X480);
//Setup the palette as Grayscale for(int i=0;i<256;i++){ setpalette(i,i); setrgbpalette(i,i,i,i); }
LoadBitmap( 10,100,FileName); getch();
ApplyOperator(DeltaR); getch();
/* clean up */ closegraph(); return 0; }
void LoadBitmap(int x,int y,char *nume) { unsigned Width,BitW,Lines; //Latime,Bytes per linie,Nr. de linii unsigned char px; //un byte citit int i,j; //contoare FILE *file; file=fopen(nume,"rb" ); fseek(file,18,SEEK_SET); //citesc latimea fread(&Width,2,1,file); fseek(file,22,SEEK_SET); //numarul de linii fread(&Lines,2,1,file); BitW= (Width+(Width%2)); BitW= (BitW%4)?(BitW/4+1)*4:BitW; ImageWidth=Width; ImageHeight=Lines; fseek(file,1078,SEEK_SET); //aici incepe imaginea for(i=Lines;i>=1;i--) //liniile sunt de jos in sus for(j=1;j<=BitW;j++) { fread(&px,1,1,file); if(j-1<=Width) putpixel(x+j-1,y+i-1,px); } fclose(file); }
void ApplyOperator(Operator op) { int x,y,i,j,px; for(y=1;y<ImageHeight-1;y++) for(x=1;x< ImageWidth-1;x++) { px=0; for(i=0;i<3;i++) for(j=0;j<3;j++) px+=getpixel(10+x-1+j,100+y-1+i)*op[i][j]; putpixel(330+x,100+y,px); } }
|
|