var b: TBlobStream; s: TMemoryStream; begin b := TBlobStream(Query1.Fields[5], bmRead); s := TmemoryStream.create; try s.copyfrom(b, b.size); s.savetofile('c:\t.jpg'); image1.picture.loadfromfile('c:\t.jpg'); finally b.free; s.free; end; end;
type THashJpg = class(TJPEGImage) end;begin FJpeg := THashJpg.Create; if Assigned(FField) then if not FField.IsNull then begin FStream := TBlobStream.Create(TBlobField(FField), bmRead); try FJpeg.LoadFromStream(FStream); Image1.Picture.Assign(FJpeg.Bitmap); finally FStream.Free end end else Image1.Picture.Assign(nil) end;
b: TBlobStream;
s: TMemoryStream;
begin
b := TBlobStream(Query1.Fields[5], bmRead);
s := TmemoryStream.create;
try
s.copyfrom(b, b.size);
s.savetofile('c:\t.jpg');
image1.picture.loadfromfile('c:\t.jpg');
finally
b.free;
s.free;
end;
end;
THashJpg = class(TJPEGImage)
end;begin
FJpeg := THashJpg.Create; if Assigned(FField) then
if not FField.IsNull then begin
FStream := TBlobStream.Create(TBlobField(FField), bmRead);
try
FJpeg.LoadFromStream(FStream);
Image1.Picture.Assign(FJpeg.Bitmap);
finally
FStream.Free
end
end
else
Image1.Picture.Assign(nil)
end;
但还有问题,用TQuery时,在演示程序中出来的的图像很小,在另一个程序中则出来上面一窄条。
而用我原先的一段程序,都是出来一窄条,怪!???
但还有问题,用TQuery时,在演示程序中出来的的图像很小,在另一个程序中则出来上面一窄条。
而用我原先的一段程序,都是出来一窄条,怪!???
但还有问题,用TQuery时,在演示程序中出来的的图像很小,在另一个程序中则出来上面一窄条。
而用我原先的一段程序,都是出来一窄条,怪!???
我这句话说错了,实际上是都不行,
用Tquery得到包含图象的字段的方法时,都不行的(图象只出来上部的一半,不知是否和TQuery的设置,或其他设置有关),但只要改用TTable,都没有问题,明天我把我的试验代码贴出来,请大家看一看。
procedure TForm1.Button1Click(Sender: TObject);
var
size:Integer;
begin
Imgtb2.Open();
//size:=TBlobField(Imgtb2.Fields[5]).BlobSize;
//if size >0 then
Begin
TBlobField(Imgtb2.Fields[7]).SaveToFile('C:\T.Jpg');
Image1.Picture.LoadFromFile('C:\T.Jpg');
End;
end;//chechy的方法
procedure TForm1.chechyClick(Sender: TObject);
var
FJpeg :THashJpg;
FField:TBlobField;
FStream:TBlobStream;
begin
FJpeg := THashJpg.Create; //Imgtb2.Open();
//FField :=TBlobField(Imgtb2.Fields[5]);
Imgtb2.Open();
FField :=TBlobField(Imgtb2.Fields[7]);
if Assigned(FField) then
begin
if not FField.IsNull then
begin
FStream := TBlobStream.Create(TBlobField(FField), bmRead);
try
FJpeg.LoadFromStream(FStream);
Image1.Picture.Assign(FJpeg);
finally
FStream.Free
end;
end;
end else
Image1.Picture.Assign(nil);
FJpeg.Free;
end;// lvloj的方法
procedure TForm1.Button4Click(Sender: TObject);
var
b: TBlobStream;
s: TMemoryStream;
FField:TBlobField;
begin
Imgtb2.Open();
FField :=TBlobField(Imgtb2.Fields[7]); b := TBlobStream.Create(FField as TBlobField,bmRead);
s := TmemoryStream.create;
try
s.copyfrom(b, b.size);
s.savetofile('c:\t.jpg');
image1.picture.loadfromfile('c:\t.jpg');
finally
b.free;
s.free;
end;
end;//我的另一方法
procedure TForm1.Button3Click(Sender: TObject);
var
Jpg2:TJPEGImage;
Stream:TStream;
FField:TBlobField;
begin
Imgtb2.Open();
Jpg2:=TJPEGImage.Create;
FField :=TBlobField(Imgtb2.Fields[7]);
try
Stream := Imgtb2.CreateBlobStream(FField, bmRead);
try
Jpg2.LoadFromStream(Stream);
Image1.Picture.Assign(Jpg2);
finally
Stream.Free;
end;
finally
Jpg2.Free;
end;end;//和上一方法差不多
procedure TForm1.Button5Click(Sender: TObject);
var
FJpeg :TJPEGImage;//THashJpg;
FField:TBlobField;
//FStream:TBlobStream;
FStream:TStream;
begin
FJpeg := TJPEGImage.Create();//THashJpg.Create; Imgtb2.Open();
FField :=TBlobField(Imgtb2.Fields[7]);
if Assigned(FField) then
begin
if not FField.IsNull then
begin
// FStream := TBlobStream.Create(TBlobField(FField), bmRead);
FStream := Imgtb2.CreateBlobStream(FField, bmRead);
try
FJpeg.LoadFromStream(FStream);
Image1.Picture.Assign(FJpeg);
finally
FStream.Free
end;
end;
end else
Image1.Picture.Assign(nil);
FJpeg.Free;
end;