Q&A

  • JPEG이미지를 이미지 콤포넌트에서......
안녕하세요....파라독스 DB에 필드로 확장자가 JPG인 이미지를 저장했는데, 그 이미지를 이미지 콤포넌트나 DBIMAGE 콤포넌트에서 읽어오지를 못합니다.

uses에 jpeg도 추가해 주었는데,,,,

급합니다.

꼭 가르쳐 주십시오....제발.....

1  COMMENTS
  • Profile
    김영대 1999.10.19 05:42
    임성룡 wrote:

    > 안녕하세요....파라독스 DB에 필드로 확장자가 JPG인 이미지를 저장했는데, 그 이미지를 이미지 콤포넌트나 DBIMAGE 콤포넌트에서 읽어오지를 못합니다.

    > uses에 jpeg도 추가해 주었는데,,,,

    > 급합니다.

    > 꼭 가르쳐 주십시오....제발.....



    아래 소스를 참고해 보시고요 이것도 도움이 안되시면

    제 홈페이지(http://myhome.shinbiro.com/~cozykyd/index.htm)의

    "자료실(4) 를 보시면 "TJPEGImage, TDBJPEGImage" 콤포넌트가 있으니

    사용해 보세요



    [1] JPEG(JPG), BMP 를 DB에 저장하고 불러오기

    unit DbJpeg;



    interface



    uses

    Db, ExtCtrls, Classes, Graphics, Jpeg, SysUtils;



    implementation



    procedure JPEGSaveToDB(BlobField: TBlobField; FileName: String);

    var

    jpg: TJPEGImage;

    bmp: TBitmap;

    mem: TMemoryStream;

    begin

    if LowerCase(ExtractFileExt(FileName)) = '.jpg' then

    begin

    with BlobField do

    begin

    // 아래 DataSet.Edit; 는 저장된 그림을 수정(UPDATE)시 사용하며

    // 신규 등록(INSERT)일때는 DataSet.Insert; 로 바꾸어야 한다

    DataSet.Edit;

    LoadFromFile(FileName);

    DataSet.Post;

    end;

    end

    else if LowerCase(ExtractFileExt(FileName)) = '.bmp' then

    begin

    // 파일이 BMP 이면 먼저 JPEG(JPG) 파일로 바꾼 후 저장한다

    bmp := TBitmap.Create;

    jpg := TJPEGImage.Create;

    mem := TMemoryStream.Create;

    try

    bmp.LoadFromFile(FileName);

    jpg.Assign(bmp);

    jpg.SaveToStream(mem);

    mem.Position := 0;

    with BlobField do begin

    DataSet.Edit;

    LoadFromStream(mem);

    DataSet.Post;

    end;

    finally

    mem.Free;

    jpg.Free;

    bmp.Free;

    end;

    end

    end;



    procedure JPEGLoadFromDB(BlobField: TBlobField; Image: TImage);

    var

    jpg: TJPEGImage;

    mem: TMemoryStream;

    begin

    jpg := TJPEGImage.Create;

    mem := TMemoryStream.Create;

    try

    if BlobField.IsNull then

    Image.Picture := nil

    else begin

    BlobField.SaveToStream(mem);

    mem.Position := 0;

    jpg.LoadFromStream(mem);

    Image.Picture.Graphic := jpg;

    end;

    finally

    mem.Free;

    jpg.Free;

    end;

    end;



    end.





    [2] DB에 저장된 JPEG(JPG)를 DBGrid에 출력하기

    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    Db, DBTables, Grids, jpeg, extctrls, DBGrids;



    type

    TForm1 = class(TForm)

    DataSource1: TDataSource;

    Query1: TQuery;

    Database1: TDatabase;

    DBGridEH1: TDBGridEH;

    procedure DBGridEH1DrawColumnCell(Sender: TObject; const Rect: TRect;

    DataCol: Integer; Column: TColumnEH; State: TGridDrawState);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation

    {$R *.DFM}



    procedure JPEGLoadFromDB(BlobField: TBlobField; Image: TImage);

    var

    jpg: TJPEGImage;

    mem: TMemoryStream;

    begin

    jpg := TJPEGImage.Create;

    mem := TMemoryStream.Create;

    try

    if BlobField.IsNull then

    Image.Picture := nil

    else begin

    BlobField.SaveToStream(mem);

    mem.Position := 0;

    jpg.LoadFromStream(mem);

    Image.Picture.Graphic := jpg;

    end;

    finally

    mem.Free;

    jpg.Free;

    end;

    end;



    procedure TForm1.DBGridEH1DrawColumnCell(Sender: TObject;

    const Rect: TRect; DataCol: Integer; Column: TColumnEH;

    State: TGridDrawState);

    var

    JPGimage: TImage;

    SRect, DRect: TRect;

    begin

    if Column.FieldName= 'PHOTO' then

    begin

    JPGimage := TImage.Create(Self);

    JPEGLoadFromDB(TBlobField(Query1.FieldByName('PHOTO')), JPGimage);

    TDBGrid(Sender).Canvas.FillRect(Rect);



    TDBGrid(Sender).Canvas.Draw(Rect.Left, Rect.Top, JPGimage.Picture.Graphic);

    // Stretch 는 아래와 같이...

    // TDBGrid(Sender).Canvas.StretchDraw(Rect, JPGimage.Picture.Graphic);

    JPGimage.Free;

    end

    else // 다른 필드

    begin

    TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);

    end;

    end;



    end.





    • 배불뚝
      1999.10.19 02:06
      sun wrote: > 여러개의 DBEdit의 값을 하나의 DBEdit에다 합계로서 표현을 하고자 합니다. > > 어떻게...
    • 한재필
      1999.10.19 01:55
      sun wrote: > 여러개의 DBEdit의 값을 하나의 DBEdit에다 합계로서 표현을 하고자 합니다. > > 어떻게...
    • 임성룡
    • 1999.10.19 00:16
    • 1 COMMENTS
    • /
    • 1 LIKES
    • 김영대
      1999.10.19 05:42
      임성룡 wrote: > 안녕하세요....파라독스 DB에 필드로 확장자가 JPG인 이미지를 저장했는데, 그 이미지를...
    • bestcds
    • 1999.10.19 00:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이재식
      1999.10.19 02:59
      bestcds wrote: > DBGrid와 DBEdit를 사용하여 입력화면을 만드었습니다. > 그리고 코드번호를 가지고 데...
    • sun
    • 1999.10.19 00:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 오승섭
      1999.10.19 01:53
      안녕하세요.... 까망곰입니다....... 이렇게 하면 어떨까요...... SELECT SUM(SOFTCODE)+SUM(HARDCOST)...
    • 송경아
    • 1999.10.18 21:34
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 박지훈.임프
      1999.10.24 20:08
      송경아 wrote: > 프로그램을 background로 실행 시킬 수 있는 api 함수가 있는지 알고 싶습니다. > (유닉...
    • 김영대
      1999.10.19 05:49
      송경아 wrote: > 프로그램을 background로 실행 시킬 수 있는 api 함수가 있는지 알고 싶습니다. > (유닉...
    • 이양규
    • 1999.10.18 20:44
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 배불뚝
      1999.10.18 23:53
      요렇게 해보세용 with query1 do begin close; sql.clear; sql.add('SELECT id, sp...
    • 이양규
      1999.10.19 00:24
      감사합니다. 성공했어요.... 왜 진작 이렇게 안했는지 ... 후후~~ 전 파라미터는 잘 안써서... 땡큐! ...
    • 오승섭
      1999.10.18 22:10
      글쎄.. 파라독스DB에서는 Date Type이 어떻게 표시되는지는 모르겠지만, 일반적으로 Date Type을 Query해...
    • 이양규
      1999.10.18 22:36
      답변 감사합니다. 그런데 TQuery.SQL 이 TString형으로 정의 되어 있는데 거기에 저장하는 자료를 어떻게...
    • 송수현
    • 1999.10.18 20:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박지훈.임프
      1999.10.24 19:32
      송수현 wrote: > 안녕하세요 ^^; > > 질문을 여러번 올렸는데 질문의 요지가 불명확했는지 답변이 없어...
    • 왕초보
    • 1999.10.18 20:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.10.19 05:57
      왕초보 wrote: > run time시 동적으로 여러개의 버튼들이 생성되었을때 > 그 버튼들을 각각 드래그하려...
    • 나원용
    • 1999.10.18 19:45
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 화랑
      1999.10.18 20:18
      안녕하세요.. 화랑입니다.. Active Form에서 Web Deploy를 할때 Option 에서 Additional Files에서 ...
    • 이은주
      1999.11.27 20:19
      안녕하세요. activeX를 마악 개발하려는 초보입니다. 제 경우는 addtional file로 등록해야 하는 파일...
    • 박지훈.임프
      1999.10.24 19:38
      조현덕 wrote: > MID Form에서 ScrollBar가 생성되지 않게 하고 싶습니다. > > Property의 AutoScr...
    • 박지훈.임프
      1999.10.24 20:10
      Lumad wrote: > > 전 지금 굉장히 큰문제에 봉착해 있습니다. > > 레포트에서 하단에 정해진 크기의 ...
    • 김영대
      1999.10.19 05:55
      Lumad wrote: > > 전 지금 굉장히 큰문제에 봉착해 있습니다. > 레포트에서 하단에 정해진 크기의 자리...
    • 나원용
    • 1999.10.18 18:22
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이재식
      1999.10.19 02:40
      나원용 wrote: > 안녕하세요? > 마이다스를 사용하여 데이터 베이스 프로그래밍을 하는 도중 > 에러가 ...
    • 김영진
    • 1999.10.18 18:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이재식
      1999.10.19 02:44
      김영진 wrote: > DBCHART에 관한 질문인데요 > 실행중에 DBCHART에 연결된 테이블을 바꾸어 동적으로 > ...
    • 박성훈
    • 1999.10.18 03:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박지훈.임프
      1999.10.24 19:40
      박성훈 wrote: > 폼위의 특정 컴포넌트의 바닥위치를 구하고 싶은데 잘 안돼서요. > 예를 들어 패널을 클...
    • 유도삼
      1999.10.18 20:05
      아! 초보 wrote: > 도사님들! 답 좀 주세여~~~~어~~~ > > 저도 언젠가는 초보 운전 딱지를 떼고 ...
    • Brainbox
    • 1999.10.17 21:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.10.19 06:09
      Brainbox wrote: > TreeView에서 window탐색기 처럼 마우스로 하위 item을 선택해서 상위item으로 드래그 ...
    • 이정욱
      1999.10.18 01:58
      타이머로 작동이 된가면 자기혼자 포커스를 가져가지 않습니다. 굳이 자기에게 포커스를 가져가게 하는 명...