오늘 c언어 파일 입출력을 배우다 BMP파일 관련한 과제가 나왔는데.. 가르쳐 주지도 않고 과제를 막 던져대니 힘들어 죽겠네요..
여기저기 찾아봐도 이해도 잘 안되고, 원하는 부분은 못 찾겠고 해서 프갤애 물어보려 합니다 ㅠ.ㅠ
위쪽 부분은 BMP파일 형식에 맞게 구조체 선언하고, fopen과 fread로 정보 읽어들이는 부분이라 잠시 잘라내고, 물어보고 싶은 부분만 잘라서 올려보아요.
여기서 for문 안에, bgr순서 중 첫번째 칸에 해당하는 색이 저장되어 있는 공간을 0으로, gray로 채우라는데, 이게 대체 무슨 의미인지 모르겠어요.
struct BITMAPFILEHEADER
{
unsigned short identity; // 2 byte : “BM” is BMP
unsigned int file_size; // 4 byte : File size in bytes
unsigned short reserved1; // 2 byte : unused(=0)
unsigned short reserved2; // 2 byte : unused(=0)
unsigned int data_offset; // 4 byte : File offset to Raster Data
};
struct BITMAPINFOHEADER
{
unsigned int header_size; // 4 byte : size of struct BITMAPINFOHEADER
int width; // 4 byte : Bitmap Width (pixel)
int height; // 4 byte : Bitmap Height (pixel)
unsigned short planes; // 2 byte : Number of Planes (=1)
unsigned short bit_per_pixel; // 2 byte : Bit per pixel (1/4/8/16/24/32)
unsigned int compression; // 4 byte : compression type, 0 :no compression
unsigned int data_size; // 4 byte : (compressed) Size of Image
int hresolution; // 4 byte : pixel/m
int vresolution; // 4 byte : pixel/m
unsigned int used_colors; // 4 byte : Number of actually used colors
unsigned int important_colors; // 4 byte : Number of important colors 0 = all
};
struct PALLETTE
{
char blue;
char green;
char red;
char reserved;
};
이 구조체 안에서 어떤 값을 0으로 만들어야 하는 건가요?ㅠㅠ
---------
printf("변경하고자하는 색상을 입력해 주세요: red:3, green:2, blue:1 gray:over 3
");//변경할 색을 결정하게 한다.
scanf("%d", &k);
if (k<4)
{
for (i = 0; i < info.height, i++;)//그림의 높이만큼 반복한다.
for (j = 0; j < info.width, j++;)//그림의 너비만큼 반복한다.(한줄씩 진행)
{
'''''''이부분 질문하고 싶은 부분'''''''''
//bgr순서중 첫번째 칸에 해당하는 색이 저장되어 있는 공간을 0으로 채운다.
//저장되어 있는 공간을 0으로 채운다.
}
else//k에 4이상의 값을 입력 받으면
{
'''''''이부분도 질문 ㅠㅠ'
for (i = 0; i < info.height, i++;)//그림의 높이만큼 반복
for (j = 0; j < info.width, j++;)//그림의 너비만큼 반복(1줄씩 실행)
{
}//gray로 색 변경
gray scale로 만들라는거 아님?ㅋㅋ
네 그말도 들었는데....... bgr순서중에 첫번째 칸에 해당하는 색이 저장된 공간을 0으로 채우란 말이 뭔지 모르겠어요 ㅜ
픽셀배열 있을거아님. 거기서 RGB 마스크를 0으로 바꾸라는거 아녀?
글 수정해서 구조체 부분도 추가했어요.. 저 값들 중에서 어떤게 픽셀 배열인가요?ㅠㅠ 뭘 0으로 만들어야 하는건지 알려주시면 정말 감사하겠습니다..
먼저 bmp 파일 구조를 이해 해라, BITMAPFILEHEADER + BITMAPINFOHEADER + PALLETTE + RGB RAW 데이터 로 이루어지고 RGB RAW 부분을 for 문으로 RED, GREEN, BLUE 색값을 직접 수정해보라는 과제이다. 참고로 GRAY 색은 R,G,B 의 각 색값이 동일할때 GRAY 로 표현된다.