注:是jpg,不是bmp
解决方案 »
- 请教一个记录方面的问题(问题简单,请各位赐教)
- 有没有办法在触发完某事件之后自动执行一个procedure?
- 动态关闭窗体
- 关于数据接受,谢谢
- *.set文件怎样打开?
- 能解释一下table中的setkey和gotokey的具体用法吗?
- delphi6 down
- 为什么我用TMediaPlayer不能快进
- 三层结构中,在客户端写了如下程序,但老是报告出错“error creating cursor handle",还有一个错误就是说sql 语句中'a'附近有错误。小弟
- 做完安装程序,为什么客户端生成的BDE中有我建的别名,但没有进行设置,为什么?
- 急救!国际标准48-bits,DES对称加密算法??
- 物归原主,散分5000,一天后结贴,no.9
showpicture(image3, Dm1.ADOQ_zyryjbqk, 'zp');
savepicture(image1, Dm1.ADOQ_qyjbqk, 'yyzzsmj');
第一个是image的名字,第二个是数据源,第三个是存图片字段名。
请参考。procedure showpicture(img: Timage; ADOQ: TADOQuery; field: string);
var MS: Tmemorystream;
begin
if not ADOQ.FieldByName(field).isnull then
begin
MS := TMemoryStream.Create;
try
TBlobField(ADOQ.FieldByName(field)).SaveToStream(MS);
MS.Position := 0; //注意
try
img.Picture.Graphic.LoadFromStream(MS);
except
//如果格式无效,则显示默认图片
on EInvalidGraphic do
//img.Picture.Graphic := fmain.Image4.Picture.Graphic;
end;
finally
MS.Free;
end;
end
else
begin
MS := TMemoryStream.Create;
try
fmain.Image4.Picture.Graphic.SaveToStream(MS);
MS.Position := 0; //注意
img.Picture.Graphic.LoadFromStream(MS);
finally
MS.Free;
end;
end;
end;procedure savepicture(img: Timage; ADOQ: TADOQuery; field: string);
var photo: Tmemorystream;
begin
photo := Tmemorystream.create;
img.Picture.graphic.savetoStream(photo);
Tblobfield(ADOQ.FieldByName(field)).loadfromstream(photo);
photo.Clear;
end;
var
sFileName : string; function BlobContentToString(const AFileName : string) : string;
begin
with TFileStream.Create(AFileName, fmOpenRead) do
try
SetLength(Result, Size);
Read(Pointer(Result)^, Size);
finally
Free;
end;
end;begin
if OpenDialog1.Execute then
begin
sFileName := OpenDialog1.FileName;
with ADOTable1 do
begin
Open;
Insert;
FieldByName('Name').AsString := Edit1.Text;
FieldByName('Photo').AsString := BlobContentToString(sFileName);
Post;
end;
end;
end;procedure TForm1.btnShowClick(Sender: TObject);
var
BS : TADOBlobStream;
JpegImage : TJpegImage;
sFileName : string;
begin
JpegImage := TJpegImage.Create;
BS := TADOBlobStream.Create(TBlobField(ADOTable1.FieldByName('Photo')), bmRead);
try
JpegImage.LoadFromStream(BS);
Image1.Picture.Assign(JpegImage);
sFileName := ExtractFilePath(Application.ExeName) + 'tmpBlob';
sFileName := sFileName + '.jpg';
BS.SaveToFile(sFileName);
//OleContainer1.CreateObjectFromFile(sFileName, False);
//Image1 := TImage.Create(Self);
//Image1.Picture.Graphic.LoadFromStream(BS);
finally
JpegImage.Free;
BS.Free;
end;
end;