고수님들 도와주세염..ㅠ.ㅠ
전 초보입니당..
클라이언트 - 서버 용 프로그램을 개발중이에요..
현재 이미지파일(*.jpg) 을 image 컴포넌트(Delphi)를 이용해서
Server 에( MS-SQL 2000 ) 에 Table1을 만들고 필드명을 IMG 라고 하고 필드형식을 IMAGE 로 선언하였습니다.
그런다음.. 첫번째 Server 의Table1.. IMG 필드에 저장하려고 하고
두번째 DBimage(Delphi) 컴포넌트를 사용해서 화면에서 저장된
이미지 파일(*.jpg)을 확인하려 합니다.
저장 시킬때는 Table 컴포넌트(Delphi)를 이용하려 합니다.
어떻게 해야할지요?
정말 초보라서 아무것도 몰라요..자세한 설명 부탁드립니다.
수고 많습니다.
저도 JPG 이미지 처리때문에 고생을 했습니다.
질답에 검색을 통하여 여러 답을 구했지만 JPG는 잘 되지가 않더라구요
내가 실력이 없어 그런가 봐요 그래서 저는 저희 회사 모든 그림은 BMP로
바꾸어 습니다. 모든 문제가 해결 되었습니다.
그러나 JPG이미지 도 해결 해야 되는데....
------ save------
TBlobField(ParamByNAme('MATR_IMAGE')).assign(Image10.Picture.Bitmap);
------- select ------
if (FieldByNAme('MATR_IMFILE').asstring <> '') then
Image10.Picture.Bitmap.Assign(FieldByName('MATR_IMAGE'))
else
Image10.Picture:=nil;
아래 답변은 제가 작성 한것이 아닙니다.
질답 검색에 얻어온 답변 입니다.
아무쪼로 도움이 많이 되시길 바랍니다.
그럼 수고 하세요
********************************************************************
이명근 wrote:
저도 이곳에서 자료를 찾아 어제 완성한 부분인데요..
시간이 없어 코드를 그냥 올립니다. 양해바랍니다.
아래는 JPG를 테이블과 TImage 콤포넌트에서
서로 주고 받는 소스입니다.
TDBImage를 직접 사용하면 화면에 보여질 때
이미지 크기가 큰 것은 제대로 보이질 않더군요
그래서 아래의 방법을 이용하면 잘됩니다.
다른 자료는 검색을 해보세요!
-----------------------------
1.JPG --> DB 저장하기
-----------------------------
procedure TFormDocSign.BtnSaveClick(Sender: TObject);
var JobMode: TTableJobMode;
JpegImage: TJpegImage;
MS: TMemoryStream;
begin
BtnSave.Enabled := False;
eDOCLICNO.Text := Trim(eDOCLICNO.Text );
eNAME.Text := Trim(eNAME.Text);
try
if Length(eDOCLICNO.Text) < 0 then begin
eDOCLICNO.SetFocus;
raise EUserDefError.CreateHelp('면허번호는 필수입력 항목입니다.'+#10+'재입력하십시요.', -1)
end;
JobMode := TableJobMode('DOCSIGN',eDOCLICNO.Text);
with DM.Query do begin
SQL.Clear;
if JobMode = tjmInsert then begin
SQL.Add('insert into DOCSIGN');
SQL.Add('(DOCLICNO, NAME, SIGN)');
SQL.Add('values(:DOCLICNO, :NAME, :SIGN)');
end
else if JobMode = tjmUpdate then begin
SQL.Add('update DOCSIGN set');
SQL.Add('NAME=:NAME,SIGN=:SIGN');
SQL.Add('where DOCLICNO=:DOCLICNO');
end
else begin
raise EUserDefError.CreateHelp('', -1)
end;
ParamByName('DOCLICNO').AsString := eDOCLICNO.Text;
ParamByName('NAME').AsString := eNAME.Text;
JpegImage := TJpegImage.Create;
MS := TMemoryStream.Create;
if ImageMap.Picture.Graphic = nil then begin
ParamByName('SIGN').Assign(ImageMAP.Picture.Bitmap); //널일경우
end
else begin
JpegImage.Assign(ImageMap.Picture.Graphic);
MS.Position:=0;
JpegImage.SaveToStream(MS);
ParamByName('SIGN').LoadFromStream(MS,ftBlob);
end;
JpegImage.Destroy;
MS.Destroy;
DM.DB.StartTransaction;
ExecSQL;
DM.DB.Commit;
GetQueryList('DOCLICNO',eDOCLICNO.Text);
end;
except
on E: Exception do begin
if DM.DB.InTransaction then DM.DB.Rollback;
MessageBox(E.Message+#10#10+'Error Code : '+IntToStr(E.HelpContext),'오류', 16);
end;
end;
BtnSave.Enabled := True;
end;
-----------------------------
[2. DB --> TImage]
-----------------------------
procedure TFormDocSign.DBGridListRowChange(Sender: TObject);
var
BitmapImage: TJPEGImage;
MS: TMemoryStream;
begin
with DBGridList.DataSource.DataSet do begin
if IsEmpty then exit;
eDOCLICNO.Text := FieldByName('DOCLICNO').AsString;
eNAME.Text := FieldByName('NAME').AsString;
if FieldByName('SIGN').IsNull then begin
ImageMap.Picture.Assign(nil);
end
else begin
BitmapImage := TJPEGImage.Create;
MS := TMemoryStream.Create;
(FieldByName('SIGN') As TBlobField).SaveToStream(MS);
MS.Position:=0;
BitmapImage.LoadFromStream(MS);
ImageMap.Picture.Assign(BitmapImage);
BitmapImage.Destroy;
MS.Destroy;
ImageMap.Stretch := PanelEdit.Height < ImageMap.Picture.Height;
end;
end;
end;
--------------------- end of 답변 ---------------
********************************************************************