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
[56420] Re:Re:이미지를 메모리에 담는것에 관한 질문입니다.
초보 [] 1842 읽음    2009-03-13 12:53
감사합니다.  엄청난 도움이 되었습니다 ^^

소이야놀자 님이 쓰신 글 :
: 1) 이미지 읽어서 화면에 뿌릴때
:   
:     // 이미지 읽을때
:     Graphics::TBitmap * pOpenBmp = new Graphics::TBitmap();     // 이거 나중에 delete해야 함.
:     pOpenBmp->LoadFromFile(FileName);
:
:     // TImage에 뿌릴때
:     TRect ImgRect = TRect(0, 0, pOpenBmp->Width, pOpenBmp->Height);
:     Image1->Canvas->StretchDraw(ImgArea, pOpenBmp);
:
:    // 이미지 읽어서 버퍼에 담을때
:    int ImgW = pOpenBmp->Width;
:    int ImgH = pOpenBmp->Height;
:    int ImgBand = 3;    // 24비트 칼라이미지면 3,   8bit 흑백 이미지면 1
:    unsigned char *pImgBuff = new unsigned char[ImgW*ImgH*ImgBand];
:    for(int iy=0; iy<ImgH; iy++)
:   {
:         Byte *ptr = (Byte *)pOpenBmp->ScanLine[iy];
:         for (int ix = 0; ix<ImgW*m_ImgBand; ix++)
:        {
:             m_pImgBuff[iy*m_ImgBand*m_ImgW+ix] = ptr[ix];
:        }
:    }
:
:   // 위에서 읽은 이미지가 24비트 칼라 이미지일 경우 아래의 과정이 필요하겠죠  8비트 이미지면 필요없습니다.
:   int iR, iB, iG;
:   unsigned char *pBuffR = new unsigned char[ImgW*ImgH];
:   unsigned char *pBuffG = new unsigned char[ImgW*ImgH];
:   unsigned char *pBuffB = new unsigned char[ImgW*ImgH];
:
:     for(int iy=0; iy<ImgH; iy++)
:    {
:         for(int ix=0; ix<ImgW; ix++)
:        {
:             iB = m_pImgBuff[(iy*ImgW+ix)*ImgBand+0];
:             iG = m_pImgBuff[(iy*ImgW+ix)*ImgBand+1];
:             iR = m_pImgBuff[(iy*ImgW+ix)*ImgBand+2];
:
:             pBuffB[iy*ImgW+ix] = iB;
:             pBuffG[iy*ImgW+ix] = iG;
:             pBuffR[iy*ImgW+ix] = iR;
:        }
:    }
:
:
:     //  다시 Image2에다 뿌릴때  쉬운방법입니다
:     //  다른 방법은 CreateDIBSection() 을 사용해 비트맵 만들어서 StretchDIBits() 로 뿌리는 방법이 있습니다.
:     int i,j;
:     byte *ptr;
:
:    Graphics::TBitmap * pTmpBmp = new Graphics::TBitmap();
:
:     pTmpBmp->Width=ImgW;
:     pTmpBmp->Height=ImgH;
:
:     for(j=0; j<ImgH; j++)
:    {
:         ptr = (Byte *)pTmpBmp->ScanLine[j];
:         for(i=0; i<ImgW; i++)
:             ptr[i]= pImgBuff[j*ImgW+i];
:    }
:
:     TRect ImgRect = TRect(0, 0, ImgW, ImgH);
:     Image2->Canvas->StretchDraw(ImgArea, pTmpBmp);
:
:    delete pTmpBmp;

+ -

관련 글 리스트
56413 이미지를 메모리에 담는것에 관한 질문입니다. 초보 1307 2009/03/12
56415     Re:이미지를 메모리에 담는것에 관한 질문입니다. 소이야놀자 1820 2009/03/12
56425         한가지 더 질문 드립니다. 초보 1287 2009/03/13
56426             JPG파일 읽을때입니다 소이야놀자 1457 2009/03/13
56420         Re:Re:이미지를 메모리에 담는것에 관한 질문입니다. 초보 1842 2009/03/13
56414     Re:이미지를 메모리에 담는것에 관한 질문입니다. 둘리.CSIEDA 1342 2009/03/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.