如何把压缩图片存到数据库中 我想实现当图片入库的时候,压缩,调出的时候解压,以供浏览等功能使用,应该如何做呢,压缩的图片如何存到数据库中 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 好像又winzip的压缩和解压的方法。 存出与存入数据库直接使用TBlobField即可。压缩与解压可以使用 zlib单元的 TCompressionStream. var mss: TMemoryStream; zip: TDeCompressionStream; zip1: TCompressionStream; fs : TFileStream; fBuf: Array[0..16383] of Byte; flen: Integer; //从数据库中取出图片 //...写出SQL语句以取得有图片的记录,此处从略 mss := TMemoryStream.Create; fs := TFileStream.Create('filename.jpg',fmCreate or fmOpenWrite); try TBlobField(Que.FieldByName('pic')).SaveToStream(mss); zip := TDeCompressionStream.Create(fs); try flen := zip.Read(fbuf, SizeOf(fBuf)); while flen > 0 do begin fs.Write(fbuf, flen); flen := zip.Read(fbuf, SizeOf(fBuf)); end; finally FreeAndNil(zip); end; finally mss.Free; fs.Free; end; //将文件filename.jpg中的图片保存到数据库 //...写出SQL语句,打开Que,并定位到要保存图片的记录,此处从略 fs := TFileStream.Create('filename.jpg',fmOpenRead); mss := TMemoryStream.Create; try zip1 := TCompressionStream.Create(clDefault,mss); try flen := fs.Read(fbuf, SizeOf(fBuf)); while flen > 0 do begin zip1.Write(fbuf, flen); flen := fs.Read(fbuf, SizeOf(fBuf)); end; //保存到数据库 TBlobField(Que.FieldByName('pic')).LoadFromStream(mss); Que.UpdateBatch(); //... finally zip1.Free; end; finally fs.Free; mss.Free; end; 另:在数据库中,图片字段的类型应为image 正则表达式 TPerlRegEx类 如何把子表达式加入string数组? TJpegImage中怎样改图像的宽高 谁会做游戏外挂? 导入速度问题 窗体设计方法 access 的字段的显示格式问题? 在其它Form中怎么取得登录的用户名?分不够可再加 哪位有关于TNCB的资料,或者给在下讲讲Netbios的作用? 各位每天写多少行代码? 求软件设计文档实例 50分 请教Ehlib3.0的完整的安装,卸载方式。 控制flash菜单的问题
压缩与解压可以使用 zlib单元的 TCompressionStream.
mss: TMemoryStream;
zip: TDeCompressionStream;
zip1: TCompressionStream;
fs : TFileStream;
fBuf: Array[0..16383] of Byte;
flen: Integer;
//从数据库中取出图片
//...写出SQL语句以取得有图片的记录,此处从略 mss := TMemoryStream.Create;
fs := TFileStream.Create('filename.jpg',fmCreate or fmOpenWrite);
try
TBlobField(Que.FieldByName('pic')).SaveToStream(mss);
zip := TDeCompressionStream.Create(fs);
try
flen := zip.Read(fbuf, SizeOf(fBuf));
while flen > 0 do begin
fs.Write(fbuf, flen);
flen := zip.Read(fbuf, SizeOf(fBuf));
end;
finally
FreeAndNil(zip);
end;
finally
mss.Free;
fs.Free;
end; //将文件filename.jpg中的图片保存到数据库
//...写出SQL语句,打开Que,并定位到要保存图片的记录,此处从略 fs := TFileStream.Create('filename.jpg',fmOpenRead);
mss := TMemoryStream.Create;
try
zip1 := TCompressionStream.Create(clDefault,mss);
try
flen := fs.Read(fbuf, SizeOf(fBuf));
while flen > 0 do begin
zip1.Write(fbuf, flen);
flen := fs.Read(fbuf, SizeOf(fBuf));
end;
//保存到数据库
TBlobField(Que.FieldByName('pic')).LoadFromStream(mss);
Que.UpdateBatch();
//...
finally
zip1.Free;
end;
finally
fs.Free;
mss.Free;
end;