tempStream:TMemoryStream; begin tempStream:=TMemoryStream.Create; // 创建内存流 tempStream.clear; if ADOQuery1.FieldByName('GRAPH').Value<>'' then //如果该字段不为空,则显示图片 begin try TBlobField(ADOQuery1.FieldByName('GRAPH')).SaveToStream(tempStream); Image1.Picture.Bitmap.LoadFromStream(tempStream); finally tempStream.Free; 请大虾帮忙看看这段代码有什么问题吗? 数据好像取不出来
var SqlStr, temp: string; tempStream: TStream; pig: TJPEGImage; begin Query1.Close; Query1.SQL.Clear; SqlStr:= 'select * from ITEMIMAGE where ITE_CODE='''+DataSource1.DataSet.FieldByName('ITE_CODE').AsString+''''; Query1.SQL.Add(SqlStr); Query1.Open; Image2.Picture.Bitmap.Assign(nil); Image2.Visible:=false; Image2.Visible:= true; pig:=TJPEGImage.Create; while not Query1.Eof do begin tempStream:=Query1.CreateBlobStream(Query1.FieldByName('ITE_IMAGE'),bmRead); try pig.LoadFromStream(tempStream); Image2.Picture.Bitmap.Assign(pig); except end; Query1.Next; tempStream.Destroy; end; Query1.Close; pig.Destroy; end;供你参考一下。
tempStream:TMemoryStream; begin tempStream:=TMemoryStream.Create; // 创建内存流 tempStream.clear; if ADOQuery1.FieldByName('GRAPH').Value<>'' then //如果该字段不为空,则显示图片 begin try TBlobField(ADOQuery1.FieldByName('GRAPH')).SaveToStream(tempStream); Image1.Picture.Bitmap.LoadFromStream(tempStream); finally tempStream.Free; 请大虾帮忙看看这段代码有什么问题吗? 数据好像取不出来 你上面的这个只是把图片转化为数据流,而没有把它变为图像格式的。你还要创建一个TJPEGImage对象才行。然后把数据流转化过来。
procedure TForm1.Button1Click(Sender: TObject); var tempstream:TStringStream; tempjpeg:TJPEGImage; begin try tempstream:=TStringStream.Create(' '); TBlobField(ADOQuery1.FieldByName('pic')).SaveToStream(tempstream); tempstream.Position:=0; tempjpeg:=TJPEGImage.Create; tempjpeg.LoadFromStream(tempstream); Image1.Picture.Bitmap.Assign(tempjpeg); finally tempstream.Free; tempjpeg.Free; end; end;procedure TForm1.Button2Click(Sender: TObject); var MyJPEG : TJPEGImage; MS: TMemoryStream; begin MyJPEG := TJPEGImage.Create; try with MyJPEG do begin Assign(Image1.Picture.Graphic); MS:=TMemoryStream.create; SaveToStream(MS); MS.Position:=0; ADOQuery1.Edit; TBlobField(ADOQuery1.FieldbyName('pic')).LoadFromStream(MS); ADOQuery1.Post; messagebox(getactivewindow(),'图像保存完毕!','保存',mb_ok); end; finally MyJPEG.Free; end; end; procedure TForm1.Button3Click(Sender: TObject); begin if opendialog1.Execute then Image1.Picture.LoadFromFile(opendialog1.FileName); end; procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField); var tempstream:TStringStream; tempjpeg:TJPEGImage; begin try tempstream:=TStringStream.Create(' '); TBlobField(ADOQuery1.FieldByName('pic')).SaveToStream(tempstream); tempstream.Position:=0; tempjpeg:=TJPEGImage.Create; tempjpeg.LoadFromStream(tempstream); Image1.Picture.Bitmap.Assign(tempjpeg); finally tempstream.Free; tempjpeg.Free; end; end;
DBImage(对bmp的支持,对Jpg的就不支持。)
begin
tempStream:=TMemoryStream.Create; // 创建内存流
tempStream.clear;
if ADOQuery1.FieldByName('GRAPH').Value<>'' then //如果该字段不为空,则显示图片
begin
try
TBlobField(ADOQuery1.FieldByName('GRAPH')).SaveToStream(tempStream);
Image1.Picture.Bitmap.LoadFromStream(tempStream);
finally
tempStream.Free;
请大虾帮忙看看这段代码有什么问题吗? 数据好像取不出来
SqlStr, temp: string;
tempStream: TStream;
pig: TJPEGImage;
begin
Query1.Close;
Query1.SQL.Clear;
SqlStr:= 'select * from ITEMIMAGE where ITE_CODE='''+DataSource1.DataSet.FieldByName('ITE_CODE').AsString+'''';
Query1.SQL.Add(SqlStr);
Query1.Open;
Image2.Picture.Bitmap.Assign(nil);
Image2.Visible:=false;
Image2.Visible:= true;
pig:=TJPEGImage.Create;
while not Query1.Eof do
begin
tempStream:=Query1.CreateBlobStream(Query1.FieldByName('ITE_IMAGE'),bmRead);
try
pig.LoadFromStream(tempStream);
Image2.Picture.Bitmap.Assign(pig);
except
end;
Query1.Next;
tempStream.Destroy;
end;
Query1.Close;
pig.Destroy;
end;供你参考一下。
begin
tempStream:=TMemoryStream.Create; // 创建内存流
tempStream.clear;
if ADOQuery1.FieldByName('GRAPH').Value<>'' then //如果该字段不为空,则显示图片
begin
try
TBlobField(ADOQuery1.FieldByName('GRAPH')).SaveToStream(tempStream);
Image1.Picture.Bitmap.LoadFromStream(tempStream);
finally
tempStream.Free;
请大虾帮忙看看这段代码有什么问题吗? 数据好像取不出来
你上面的这个只是把图片转化为数据流,而没有把它变为图像格式的。你还要创建一个TJPEGImage对象才行。然后把数据流转化过来。
var
tempstream:TStringStream;
tempjpeg:TJPEGImage;
begin
try
tempstream:=TStringStream.Create(' ');
TBlobField(ADOQuery1.FieldByName('pic')).SaveToStream(tempstream);
tempstream.Position:=0;
tempjpeg:=TJPEGImage.Create;
tempjpeg.LoadFromStream(tempstream);
Image1.Picture.Bitmap.Assign(tempjpeg);
finally
tempstream.Free;
tempjpeg.Free;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var
MyJPEG : TJPEGImage;
MS: TMemoryStream;
begin
MyJPEG := TJPEGImage.Create;
try
with MyJPEG do
begin
Assign(Image1.Picture.Graphic);
MS:=TMemoryStream.create;
SaveToStream(MS);
MS.Position:=0;
ADOQuery1.Edit;
TBlobField(ADOQuery1.FieldbyName('pic')).LoadFromStream(MS);
ADOQuery1.Post;
messagebox(getactivewindow(),'图像保存完毕!','保存',mb_ok);
end;
finally
MyJPEG.Free;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if opendialog1.Execute then
Image1.Picture.LoadFromFile(opendialog1.FileName);
end;
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
var
tempstream:TStringStream;
tempjpeg:TJPEGImage;
begin
try
tempstream:=TStringStream.Create(' ');
TBlobField(ADOQuery1.FieldByName('pic')).SaveToStream(tempstream);
tempstream.Position:=0;
tempjpeg:=TJPEGImage.Create;
tempjpeg.LoadFromStream(tempstream);
Image1.Picture.Bitmap.Assign(tempjpeg);
finally
tempstream.Free;
tempjpeg.Free;
end;
end;