안녕하세요.. 오랜만에 또 들렀습니다..
다름이 아니구요.. 이미지 저장을 하는데... 테이블을 이용해서 하니까 속도가 너무 느리네요.. 어쩔땐 뻗어버리기도 하고...
그래서.. 쿼리를 사용해서 저장을 하고 싶은데요...
이미지 파일을 이진데이타 형식으로 바꾸는 방법을 모르겠어요........
좀 도와주세요...
테이블을 사용할 때 아래와 같은 동일한 기능을 알려주세요..
tmpStream := ADOTable2.CreateBlobStream(ADOTable2sajin, bmWrite);
Try
Begin
If (Image1.Picture.Graphic is TBitMap) Then
(Image1.Picture.Graphic as TBitmap).SaveToStream(tmpStream)
Else If(Image1.Picture.Graphic is TJPegImage) Then
(Image1.Picture.Graphic as TJPegImage).SaveToStream(tmpStream)
End;
수고 많습니다.
님이 원하는 답변은 아닙니다.
단지 참고만 하세요
아래 글은 26635번 글을 복사해서 올립니다.
그럼 수고 하세요...
********************************************************************
저도 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 답변 ---------------