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

C++빌더 Q&A
C++Builder Programming Q&A
[3866] Re:안녕하세요.. 좀 급한데.. C이구요... bmp파일에 관한것입니다.
zoro [] 3555 읽음    2000-08-04 00:00
먼저 여러가지 놓치신게 있지않나 싶군요..
1. 현재 비트맵화일이 칼라정보만가지고 있는 .raw인지요..
2. 비트맵의 bits per  pixel이 몇인지요.. 2bit인지 8bit인지 아님 true color인지요..

이것을 하시기전에 bitmap file 구조를 파악하시는게 더 좋을것 같습니다.
윈도우즈 api책을 보면 잘나와요..

글구 이건  cbuilder의 이미지를 사용해서 함해보죠..
검증은 안해보고 지금 생각나는데로 쓰니까
참고해서 보셔요..

void __fastcall TForm1::Button1Click(TObject *Sender)
{
// 먼저 Image를 폼에 붙이고 object Inspector에서
// Picture Property에서 해당 비트맵을 로드해놓으시고..
  
   unsigned char Al_array[255] = {0};
   unsigned char *color;
   int w, h;
   w = Image1->Picture->Bitmap->Width;
   h = Image1->Picture->Bitmap->Height;
// 8bit 비트맵이라고 가정...
// 16bit나 24bit는 알아서 구현해보셔요..
       
  if (Image1->Picture->Bitmap->PixelFormat == pf8bit) {
     for (int y = 0; y < h; y++) {
       color = (unsigned char *)Image1->Picture->Bitmap->ScanLine[y];
       for (int x= 0; x < w; x++) {
         Al_array[color[x]]++;
       }
     }
   }
}

제가 질문의 핵심을 또 잃어버린걸까요.. 이것저것 주저리
적었는데 돔이 됬으면 좋겠군요..
그럼 즐거운 하루되십시요..

ghost 님이 쓰신 글 :
: bmp파일을 읽어서 bmp파일에 그려져 있는 색깔을 나타내는 것입니다.
: 색깔은 RGB로 흰색은 0 검은색 255이구요
: 이것을 읽어드려서 0~255이 몇번 나왔나?를 구하는 것입니다
: 나름대로 짜 보았는데..
: 잘 되지 않는군요..
: 실행 시키면 byte보다 큰 값이 나오는 군요..
:
:
:
:
: #define size 1
: #define n 1
:
: FILE *fptr;
: int Al_array[256];
:
:
: void main()
: {   
:     int i = 0;
:     int data,read;
:     char list[4];
:     char temp[2];
:     //int n;
:    
:          // fopen으로 bmp파일 읽습니다. 이 파일의 크기는 576KB이구요 
:     if((fptr = fopen('C:\\project\\trangle.bmp','r')) != NULL)
:     {
:         printf('start\n');
:
:                   //fread함수로 1byte씩 읽습니다.
:         while(( read = fread(list, size,n, fptr)) != NULL)
:         {            
:             if( list[i] != '\0')
:             {
:                 //data = list[0];
:                 temp[i] = list[i];
:                 data = atoi(temp);           
:                            if( data >= 0 && data <= 255)
:                       {
:                                           // 빈도수 증가         
:                                 ++Al_array[data];       
:                    
:                        }
:             }       
:         }
:
:     }
:            
:     else
:     {
:         printf('error');
:     }
:
:          // 빈도수 나타내기
:     for( i = 0; i < 256 ; i++)
:     printf('%2d : %10d\n', i, Al_array[i]);
:           fclose(fptr);
:
: }
:
:
:

+ -

관련 글 리스트
3862 안녕하세요.. 좀 급한데.. C이구요... bmp파일에 관한것입니다. ghost 3293 2000/08/03
3866     Re:안녕하세요.. 좀 급한데.. C이구요... bmp파일에 관한것입니다. zoro 3555 2000/08/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.