数据库存好照片的问题. 用数据库怎样存放一张照片??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var MyJPEG : TJPEGImage; MS: TMemoryStream;begin openpicturedialog1.Execute; if openpicturedialog1.FileName<>'' then begin image.Picture.LoadFromFile(openpicturedialog1.FileName); openpicturedialog1.FileName:=''; MyJPEG := TJPEGImage.Create; try with MyJPEG do begin Assign(Image.Picture.Graphic); MS:=TMemoryStream.create; SaveToStream(MS); MS.Position:=0; adotable1.Append; TBlobField(adotable1.FieldbyName('photo')).LoadFromStream(MS); adotable1.Post; messagebox(getactivewindow(),'图像保存完毕!','保存',mb_ok); image.Picture.CleanupInstance; end; finally MyJPEG.Free; end; end;显示图片var tempstream:TStringStream; tempjpeg:TJPEGImage;begin try tempstream:=TStringStream.Create(' '); TBlobField(adodataset1.FieldByName('photo')).SaveToStream(tempstream); tempstream.Position:=0; tempjpeg:=TJPEGImage.Create; tempjpeg.LoadFromStream(tempstream); DBImage1.Picture.Bitmap.Assign(tempjpeg); finally tempstream.Free; tempjpeg.Free; end;end; 这是一段CB的代码,你可以自己改变一下://往数据库中存放图片bool SetImgField(TDataSet * tds,TField * tfd,TPicture *pPicture){ TJPEGImage *jp = new TJPEGImage(); bool flag = true; jp->Assign(pPicture->Bitmap); TStream *pstream; pstream = tds->CreateBlobStream(tfd, bmReadWrite); try { jp->Compress(); jp->SaveToStream(pstream); //flag = true; } __finally { delete pstream; //flag = false; } delete jp; return flag;}//---------------------------------------------------------------------------//从数据库中读出图片bool GetImgField(TPicture *pPicture, TDataSet * tds, TField * tfd){ TStream *pstream; pstream = tds->CreateBlobStream( tfd, bmRead); if( pstream->Size == 0) return false; TJPEGImage *jp = new TJPEGImage(); try { jp->LoadFromStream(pstream); } __finally { delete pstream; } pPicture->Bitmap->Assign( jp ) ; delete jp; return true;} delphi的基类怎么创建呀 delphi2010保存时会自动删除空方法? UTF-8转换成GB2312的问题 delphi2009中的Edit控件能移植到delphi2007中吗? 请问得到时区的API函数是哪个啊? 请问:网上有DELPHI 2005正式版的下载吗?我找了一下,好象没找到。。。如果谁知道网址,请告诉下~谢谢~ 在线等待 不知如何是好???? 大家帮忙出出主意,斑竹手下留情!! 想问下,代理服务器NAT映射的时限是多少 教学需要 我该选择delphi吗?不是在比较语言!!!
MyJPEG : TJPEGImage;
MS: TMemoryStream;
begin
openpicturedialog1.Execute;
if openpicturedialog1.FileName<>'' then
begin
image.Picture.LoadFromFile(openpicturedialog1.FileName);
openpicturedialog1.FileName:='';
MyJPEG := TJPEGImage.Create;
try
with MyJPEG do
begin
Assign(Image.Picture.Graphic);
MS:=TMemoryStream.create;
SaveToStream(MS);
MS.Position:=0;
adotable1.Append;
TBlobField(adotable1.FieldbyName('photo')).LoadFromStream(MS);
adotable1.Post;
messagebox(getactivewindow(),'图像保存完毕!','保存',mb_ok);
image.Picture.CleanupInstance;
end;
finally
MyJPEG.Free;
end;
end;
显示图片
var
tempstream:TStringStream;
tempjpeg:TJPEGImage;
begin
try
tempstream:=TStringStream.Create(' ');
TBlobField(adodataset1.FieldByName('photo')).SaveToStream(tempstream);
tempstream.Position:=0;
tempjpeg:=TJPEGImage.Create;
tempjpeg.LoadFromStream(tempstream);
DBImage1.Picture.Bitmap.Assign(tempjpeg);
finally
tempstream.Free;
tempjpeg.Free;
end;
end;
bool SetImgField(TDataSet * tds,TField * tfd,TPicture *pPicture)
{
TJPEGImage *jp = new TJPEGImage();
bool flag = true;
jp->Assign(pPicture->Bitmap);
TStream *pstream;
pstream = tds->CreateBlobStream(tfd, bmReadWrite);
try
{
jp->Compress();
jp->SaveToStream(pstream);
//flag = true;
}
__finally
{
delete pstream;
//flag = false;
}
delete jp;
return flag;
}
//---------------------------------------------------------------------------
//从数据库中读出图片
bool GetImgField(TPicture *pPicture, TDataSet * tds, TField * tfd)
{
TStream *pstream;
pstream = tds->CreateBlobStream( tfd, bmRead);
if( pstream->Size == 0) return false;
TJPEGImage *jp = new TJPEGImage();
try
{
jp->LoadFromStream(pstream);
}
__finally
{
delete pstream;
}
pPicture->Bitmap->Assign( jp ) ;
delete jp;
return true;
}