Q&A

  • tif 그림 화일 image 컴포넌트에 가져와서 db 저장 방법 문의?
GraphicEX 라이브러리 사용해서 image 컴포넌트에 tif 화일을 올려 놓았습니다.

GraphicEX 라이브러리 데모를 참조했습니다.
-------------------------------------------------------------------------
var
Start: DWORD;
GraphicClass: TGraphicExGraphicClass;
Graphic: TGraphic;
tStream : TMemoryStream;
begin
    tStream := TMemoryStream.Create;

    GraphicClass := FileFormatList.GraphicFromContent(FileName);
     if GraphicClass = nil then
        begin -> 1번
              Image1.Picture.LoadFromFile(FileName);
              ShowMessage(tstreamsize is ' + inttostr(tstream.size));
        end
        else
        begin -> 2번
              Graphic := GraphicClass.Create;
              Graphic.LoadFromFile(FileName);
              Image1.Picture.Graphic := Graphic;

              Graphic.SaveToStream(tstream);
              ShowMessage(tstreamsize is ' + inttostr(tstream.size));
        end;
end;
-----------------------------------------------------------------
1번은 tif 이외 bmp, jpe 화일들을 불러오면 1번을 타구
     tif 화일을 불러오면 2번을 타는듯합니다.

문제은 전 tif 화일들만 db로 저장할려구 합니다.
그래서 모두 2번을 타죠..
그런데.. 2번 로직에서 showmessage  size 0 으로 나옵니다.
(1번 로직 showmessage  sizw 은 실제 그림 크기를 가져옵니다.)
tif 화일이 image 컴포넌트에는 보여지나 실질적으로 그림을 TMemoryStream
에서 못가져온다는 생각이 듭니다..

그래서 이것을
          ParamByName('blobfield').LoadFromStream(BStream, ftBlob);

update 쿼리를 날리면 ORA -24801 OCL LOB 매개변수가 맞지 않는다는 오류
가 떨어집니다..

환경은 오라클 9i, 델파이 7,  다이렉트 컴포넌트를 사용해서  연결하구 있습니다.

tif 화일은 CCITT Group 4으로 압축된 Tiff 아닙니다.

부족한 부분 조언 부탁드립니다. 아니면 다른 방법을 알려주시면 고맙겠습니다.
서버에 요청 중입니다. 잠시만 기다려 주십시오...