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
[65656] bmp RAW데이터를 화면에 표출해줄려고 하는데 잘 안되네요 도와주세요
암흑사제 [] 1370 읽음    2011-12-08 15:16
RAW 데이터를 읽어와서
화면에 표출해줄려고 하는데
영상이 이상하게 나타나고 있습니다.
도와주세요
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "frmMainFTP.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//   
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
//
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    AnsiString              szFileNamePath;
    BITMAPFILEHEADER        bmfh;
    BITMAPINFOHEADER        bmih;
    int                     nBitmapHeaderSize;
    long                     nLength = 0;
    long                    nWidth      = 1624;
    long                    nHeight     = 1232;
    PBYTE                   pRawImageTemp = NULL;
    int   nFileHandle, nFileCreHandle;

    long  lBytesRead;
    long  lDataSize;



    if(OpenDialog1->Execute())
    {
        szFileNamePath = OpenDialog1->FileName;

        TMemoryStream   *m_pBitmapStream = new TMemoryStream();

        nBitmapHeaderSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
        nLength = (long)nWidth * (long)nHeight;

        pRawImageTemp = new BYTE[nWidth * nHeight];

        if( (nFileHandle = FileOpen(szFileNamePath, fmOpenRead)) != -1)
        {
            lBytesRead = FileRead(nFileHandle, pRawImageTemp, nLength);
            if (nLength == lBytesRead)
            {
                bmih.biSize=sizeof(BITMAPINFOHEADER);
                bmih.biWidth                =(unsigned long)nWidth;
                bmih.biHeight               =(unsigned long)nHeight;
                bmih.biPlanes               =(UINT)1;
                bmih.biBitCount             = (UINT)8;
                bmih.biCompression          = (UINT)BI_RGB;
                bmih.biSizeImage            =(long)nLength;
                bmih.biXPelsPerMeter        =0;
                bmih.biYPelsPerMeter        =0;
                bmih.biClrUsed              =0;
                bmih.biClrImportant         =0;

                bmfh.bfType =  0x4d42;    // 'BM'
                bmfh.bfSize = nBitmapHeaderSize + nLength;
                bmfh.bfReserved1 = 0;
                bmfh.bfReserved2 = 0;
                bmfh.bfOffBits = nBitmapHeaderSize;


                m_pBitmapStream->Position = 0L;
                m_pBitmapStream->WriteBuffer(&bmfh, sizeof(BITMAPFILEHEADER));
                m_pBitmapStream->WriteBuffer(&bmih, sizeof(BITMAPINFOHEADER));
                m_pBitmapStream->WriteBuffer(pRawImageTemp, nLength);

                m_pBitmapStream->Position = 0L;
                Image1->Picture->Bitmap->LoadFromStream(m_pBitmapStream);
            }
        }
       
        delete m_pBitmapStream;
        delete pRawImageTemp;
    }

}
//---------------------------------------------------------------------------

+ -

관련 글 리스트
65656 bmp RAW데이터를 화면에 표출해줄려고 하는데 잘 안되네요 도와주세요 암흑사제 1370 2011/12/08
65664     Re:bmp RAW데이터를 화면에 표출해줄려고 하는데 잘 안되네요 도와주세요 왕초보와빌더 1217 2011/12/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.