[C] Bitmap 파일 생성 예제
Bitmap 이미지 파일을 생성하는
예제 프로그램입니다.
Bitmap 파일 포맷을 공부하기 위해
한번 만들어봤습니다.
개발환경
Gentoo Linux 2.6.32-r2
gcc 4.4.2
예제 프로그램입니다.
Bitmap 파일 포맷을 공부하기 위해
한번 만들어봤습니다.
개발환경
Gentoo Linux 2.6.32-r2
gcc 4.4.2
#include<stdio.h>
#include<string.h>
#include<fcntl.h>
#pragma pack(2)
typedef struct {
unsigned short int type; //Magick indentifier
unsigned int size; //file size in bytes
unsigned short int reserved1, reserved2;
unsigned int offset; //Offset to image data
} BITMAPFILEHEADER;
typedef struct {
unsigned int size; //header size in bytes
int width, height; //Width, Height of image
unsigned short int planes; //Number of Colour planes
unsigned short int bits; //Bit per pixel
unsigned int compression; //Compression type
unsigned int imagesize; //Image size
int xresolution, yresolution; //Pixel per meter
unsigned int ncolours; //Number of Colours
unsigned int importantcolours; //Important Colours
} BITMAPFILEINFOHEADER;
#pragma pack()
int main(int argc, char **argv)
{
int i = 0;
int fd = 0;
int ret = 0;
char imagedata[100*100*3];
BITMAPFILEHEADER header;
BITMAPFILEINFOHEADER infoheader;
fd = open("bitmap.bmp", O_CREAT | O_RDWR, 0);
if(fd < 0)
{
fprintf(stderr, "Error : Can't create or open file\n");
return -1;
}
memset(imagedata, 0x00, sizeof(imagedata));
for(i = 0 ; i<100*100*3 ; i = i + 3)
{
//blue
imagedata[i] = 0xFF;
//green
imagedata[i+1] = 0;
//red
imagedata[i+2] = 0;
}
memset(&infoheader, 0x00, sizeof(infoheader));
infoheader.size = sizeof(infoheader);
infoheader.width = 100;
infoheader.height = 100;
infoheader.planes = 1;
infoheader.bits = 24;
infoheader.compression = 0;
infoheader.imagesize = sizeof(imagedata);
infoheader.xresolution = 2000;
infoheader.yresolution = 2000;
infoheader.ncolours = 0;
infoheader.importantcolours = 0;
memset(&header, 0x00, sizeof(header));
header.type = 0x4D42;
header.size = sizeof(header) + sizeof(infoheader) + 100*100*4;
header.offset = sizeof(header) + sizeof(infoheader);
write(fd, &header, sizeof(header));
write(fd, &infoheader, sizeof(infoheader));
write(fd, imagedata, sizeof(imagedata));
close(fd);
return 0;
}Posted by ExSuperstar
Track this back : http://exsuperstar.net/trackback.php?blogid=404
Commented by
임승욱
at 2010/02/02/ 09:49
죄송한데요.. gtk에서 progress와 timer 사용한 소스를 wxWidgets 형식으로
바꿔서 보여주실 수는 없나요?
제가 wxwidgets에서 wxtimer를 이용해서 버튼 클릭시 1초마다 패널에 그림이 나오게
하려고 하는데 이 소스를 참고 하려고 합니다.
그런데 wxtiemr 에 대한 개념을 잘 못 잡겠네요.
혹시 바꿔 주실 수 있으면 고맙겠습니다..
2주가 지나가는데 진도가 나가지 않고 있으니 참 답답하네요.
밑에다가 댓글 달려니깐 오래된 글이라서 댓글이 안
달리네요.
바꿔서 보여주실 수는 없나요?
제가 wxwidgets에서 wxtimer를 이용해서 버튼 클릭시 1초마다 패널에 그림이 나오게
하려고 하는데 이 소스를 참고 하려고 합니다.
그런데 wxtiemr 에 대한 개념을 잘 못 잡겠네요.
혹시 바꿔 주실 수 있으면 고맙겠습니다..
2주가 지나가는데 진도가 나가지 않고 있으니 참 답답하네요.
밑에다가 댓글 달려니깐 오래된 글이라서 댓글이 안
달리네요.
Commented by
ExSuperstar
at 2010/02/04/ 05:48
임승욱// 방문해 주셔서 감사합니다. 포스팅 할테니 참조하세요 ㅋ





