Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[6943] c언어 오류좀 잡아주세요.ㅠ
chul [] 2143 읽음    2015-04-25 00:16
c언어로 raw파일을 bmp로 바꾸려고 하는데 오류가 나네요 ㅠ 어디가 문제인지 찾지못하겠어요ㅜ

부탁드리겠습니다.ㅜㅜ

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

struct RGB{
  BYTE r;
  BYTE g;
  BYTE b;
};
BYTE image[512][512];
int  main()
  {
   FILE *fp;
   FILE *fp1;
   int imageW = 512;
   int imageH = 512;
   int storeW = imageW;
  
   RGB image[512][512];

  BITMAPFILEHEADER bh;
   BITMAPINFOHEADER bInfo;


   int i = 0;
   RGBQUAD rgb;
   unsigned char *image[1000];
  
   fp = fopen("lena.raw", "rb");
   if (fp == NULL)
   {
    printf("open lena.raw failed\n");
    return 0;
   }

  for (i = 0; i<512; i++)
   {
    image[i] = malloc(512);
    fread(image[i], 1, 512, fp);
   }
   fclose(fp);
   fp1 = fopen("f:\\new.bmp", "wb");
   if (fp1 == NULL)
   {
    printf("open new.bmp failed\n");
    return 0;
   }


   if (storeW % 4 != 0)
   {
    storeW += (4 - storeW % 4);//
   }
  
   bh.bfType = ((WORD)('M' << 8) | 'B');
   bh.bfReserved1 = 0;
   bh.bfReserved2 = 0;
   bh.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256 + storeW*imageH;
   bh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256;
   bInfo.biSize = sizeof(BITMAPINFOHEADER);
   bInfo.biWidth = imageW;
   bInfo.biHeight = imageH;
   bInfo.biPlanes = 1;
   bInfo.biBitCount = 8;
   bInfo.biCompression = BI_RGB;
   bInfo.biSizeImage = storeW*imageH;
   bInfo.biXPelsPerMeter = 0;
   bInfo.biYPelsPerMeter = 0;
   bInfo.biClrUsed = 256;
   bInfo.biClrImportant = 0;
   fwrite(&bh, sizeof(BITMAPFILEHEADER), 1, fp1);
   fwrite(&bInfo, sizeof(BITMAPINFOHEADER), 1, fp1);

  rgb.rgbReserved = 0;
   for (i = 0; i<256; i++)
   {
    rgb.rgbBlue = rgb.rgbRed = rgb.rgbGreen = i;
    fwrite(&rgb, sizeof(RGBQUAD), 1, fp1);
   }
   for (i = 0; i<256; i++)
   {
    fwrite(image[511 - i], 1, 512, fp1);
   }
   fclose(fp1);
   return 0;

}

+ -

관련 글 리스트
6943 c언어 오류좀 잡아주세요.ㅠ chul 2143 2015/04/25
6944     Re:c언어 오류좀 잡아주세요.ㅠ 차주강 1887 2015/04/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.