数据库ACCESS。
之前用dbimage控件,将jpe图片作为ole保存到数据库中。数据库剧增(估计是因为把jpg转化成了位图的原因),代码如下
procedure Tmainform.Button1Click(Sender: TObject);
var
Ind,i:Integer;
FName:string;
AJPeg:TJPEGImage;
temp:TBitmap;
begin
if OpenPictureDialog1.Execute then
begin
Ind:=OpenPictureDialog1.Files.Count;
for i:=0 to Ind-1 do
begin
FName:=OpenPictureDialog1.Files.Strings[i];
Application.ProcessMessages;
ADODataSet1.edit;
//DBImage1.Picture.AsString:=FName;
if UpperCase(Copy(FName,Length(Fname)-3,4))='.JPG' then
begin
AJpeg:=TJPEGImage.Create;
AJpeg.LoadFromFile(FName);
Temp:=TBitmap.Create;
Image1.Height:=Ajpeg.Height;
Image1.Width:=Ajpeg.Width;
Image1.Picture:=nil;
Image1.Canvas.Draw(0,0,Ajpeg);
DBImage1.Picture:=Image1.Picture;
AJpeg.Free;
Image1.Free;
end
else
DBImage1.Picture.LoadFromFile(FName);
ADODataSet1.Post;
end;
end;
end;
现在想用什么办法将数据库中jpe保存空间变小。
用Timage控件,每次在一个文件夹中载入,
问题是:怎么让每次数据库当前纪录项中的数据和image同步。网上下了个代码还是不是很懂。
之前用dbimage控件,将jpe图片作为ole保存到数据库中。数据库剧增(估计是因为把jpg转化成了位图的原因),代码如下
procedure Tmainform.Button1Click(Sender: TObject);
var
Ind,i:Integer;
FName:string;
AJPeg:TJPEGImage;
temp:TBitmap;
begin
if OpenPictureDialog1.Execute then
begin
Ind:=OpenPictureDialog1.Files.Count;
for i:=0 to Ind-1 do
begin
FName:=OpenPictureDialog1.Files.Strings[i];
Application.ProcessMessages;
ADODataSet1.edit;
//DBImage1.Picture.AsString:=FName;
if UpperCase(Copy(FName,Length(Fname)-3,4))='.JPG' then
begin
AJpeg:=TJPEGImage.Create;
AJpeg.LoadFromFile(FName);
Temp:=TBitmap.Create;
Image1.Height:=Ajpeg.Height;
Image1.Width:=Ajpeg.Width;
Image1.Picture:=nil;
Image1.Canvas.Draw(0,0,Ajpeg);
DBImage1.Picture:=Image1.Picture;
AJpeg.Free;
Image1.Free;
end
else
DBImage1.Picture.LoadFromFile(FName);
ADODataSet1.Post;
end;
end;
end;
现在想用什么办法将数据库中jpe保存空间变小。
用Timage控件,每次在一个文件夹中载入,
问题是:怎么让每次数据库当前纪录项中的数据和image同步。网上下了个代码还是不是很懂。
2.把你网上下载的代码贴出来看看。
调用时直接调用文件
TBlobField(aqMaster.FieldByName('FileContent')).LoadFromFile(sFile);
aqMaster.FieldByName('PictureName').AsString := sFileName;
aqMaster.Post;
http://community.csdn.net/Expert/topic/4675/4675019.xml?temp=.4098627
InStream, OutStream: TMemoryStream;
begin
……
//设置正文:从数据库中解压缩
(FieldByName('body') as TBlobField).SaveToStream(InStream);
InStream.Position := 0;
OutStream := TMemoryStream.Create;
PowerArcDecompress(InStream, OutStream, FOnCompress);
OutStream.Position := 0;然后你就可以把OutStream用在你的图片显示上了:
bm := TBitmap.Create;
bm.LoadFromStream(OutStream);