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

델파이 Q&A
Delphi Programming Q&A
[14859] Re:Re:image, blob 처리, 이런 방법이 가능한가요?
좋은 사람 [borland66222] 2218 읽음    2013-11-17 16:19
저는 아래와 같이 하여 해결 하였습니다...
도움이 되셨길 바랍니다.

procedure Tform_SystCompany01.proc_Product_Select_to_Image_Display(wk_Code : String);
var
    tmpStream1  : TStream;
    tmpImg1     : TGraphic;
    strSignType : String;
begin
    WITH ADOQuery Do
    Begin
        Close;
        Sql.clear;
        Sql.Add('SELECT                                    ');
        Sql.Add('       COMPANY_SIGN                       ');
        Sql.Add('      ,SIGN_TYPE                          ');
        Sql.Add('  FROM SYST_COMPANY_MAST ');
        Sql.Add(' WHERE COMPANY_CODE  = ' + wk_Code         );

        if User_Execute_Try(1,'S',gb_ProgramName) = False then
        Begin
            ADOQuery.Close;
            Exit;
        End;

        if ADOQuery.RecordCount = 0 then
        Begin
            ADOQuery.Close;
            MoonArtMain.StatusBar1.Panels[0].Text :='조회할 자료가 없습니다.!!!';
            exit;
        End;

        if  FieldByName('SIGN_TYPE').AsString <> '' then
            begin
                strSignType := FieldByName('SIGN_TYPE').AsString;

                if strSignType = 'jpg' then
                    tmpImg1 := TJPEGImage.Create
                else
                if strSignType = 'png' then
                    tmpImg1 := TPngImage.Create
                else
                if strSignType = 'gif' then
                    tmpImg1 := TGIFImage.Create
                else
                if strSignType = 'bmp' then
                    tmpImg1 := TBitmap.Create;

                tmpStream1 := CreateBlobStream(FieldByName('COMPANY_SIGN'),bmRead);
                tmpImg1.LoadFromStream(tmpStream1);

                if  tmpStream1.Size > 0 then
                    Self.Image1.Picture.Assign(tmpImg1)
                else
                    Self.Image1.Picture := nil;

            end;
    End;

    ADOQuery.Close;

    tmpImg1.Free;
    tmpStream1.Free;
End;


루도라 님이 쓰신 글 :
: blob 데이타가 어떤 이미지 포멧인지 알고 있다면..
:
: procedure LoadGraphic(Image: TImage; Stream: TStream; GraphicClass: TGraphicClass);
: begin
:   Image.Graphic:= GraphicClass.Create;
:   Image.Graphic.LoadFromStream(Stream);
: end;
:
: ...
:
:   BStream := query1.CreateBlobStream(query1.FieldByname('photo'),bmRead);
:
:   //a_image := BStream; -> 이 부분을 어떻게 처리해야 하는 지 모르겠습니다.
:   LoadGraphic(a_image, BStream, TBitmap { or TJPEGImage });
:
: 위처럼 GraphicClass 를 지정해서 생성한 후 LoadFromStream 으로 데이타를 로딩하면 됩니다.
:
: 쩌그노트 님이 쓰신 글 :
: : 오라클 blob 이미지를 읽어서 함수에 태워 원하는 결과값을 얻어내는 로직을 구현하는데
: : 이미지 관련 형식을 잘 몰라 질문 드립니다.
: :
: : //기존 소스
: : procedure TMainForm.buttonClick(Sender: TObject);
: : var i, iErr : integer;
: :     a_image, b_image : TImage;
: : begin
: :      //해당 폴더의 이미지를 flist_box에 뿌려준다.
: :      flist_box.ApplyPath(cxFolder.Text);
: :
: :      for i := 1 to fListBox.Items.Count do
: :      begin
: :           a_image := TImage.Create(Self);
: :           b_image := TImage.Create(Self);
: :
: :           a_image.Picture.LoadFile(fListBox.Items[i-1]);
: :
: :           //리스트박스의 이미지파일을 순차적으로 함수에 태운다.
: :           //함수의 형식은 정해져 있기 때문에 수정불가함.
: :           iErr := g_ImageLib.GetCropImage(a_image, b_image);
: :      end;
: :      a_image.Free;
: :      b_image.Free;
: : end; 
: :
: : -> 수정 사항. 폴더의 이미지를 선택하는 게 아니라 오라클 DB의 Blob 이미지를 불러 와야 함.
: : procedure TMainForm.buttonClick(Sender: TObject);
: : var i, iErr : integer;
: :     a_image, b_image : TImage;
: :     BStream : TStream;
: : begin
: :      with Query1 do
: :      begin
: :           close;
: :           sql.clear;
: :           sql.add(' select photo from test  ');
: :           sql.add(' where photo_no = '1234' ');
: :           open;
: :      end;
: :     
: :      for i := 1 to query1.recordcount do
: :      begin
: :           a_image := TImage.Create(Self);
: :           b_image := TImage.Create(Self);
: :
: :           BStream := query1.CreateBlobStream(query1.FieldByname('photo'),bmRead);
: :
: :           a_image := BStream; -> 이 부분을 어떻게 처리해야 하는 지 모르겠습니다.
: :                                      데이타 형식을 맞춰야 할 거 같은데 가능 한지요?
: :          
: :           //리스트박스의 이미지파일을 순차적으로 함수에 태운다.
: :           //함수의 형식은 정해져 있기 때문에 수정불가함.
: :           iErr := g_ImageLib.GetCropImage(a_image, b_image);
: :      end;
: :      a_image.Free;
: :      b_image.Free;
: : end; 
: :
: : inttostr처럼 TStream -> TImage으로 형식을 맞추는 작업이 아예 불가능한지,
: : 아니면 다른 방법이 있는 건지 조언을 해주시면 감사하겠습니다. 
: :

+ -

관련 글 리스트
14708 image, blob 처리, 이런 방법이 가능한가요? 쩌그노트 1893 2013/06/14
14728     Re:image, blob 처리, 이런 방법이 가능한가요? gomsun2 1889 2013/07/18
14721     Re:image, blob 처리, 이런 방법이 가능한가요? 루도라 1978 2013/07/04
14859         Re:Re:image, blob 처리, 이런 방법이 가능한가요? 좋은 사람 2218 2013/11/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.