오라클 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으로 형식을 맞추는 작업이 아예 불가능한지,
아니면 다른 방법이 있는 건지 조언을 해주시면 감사하겠습니다.
|