我想实现当图片入库的时候,压缩,调出的时候解压,以供浏览等功能使用,应该如何做呢,压缩的图片如何存到数据库中
解决方案 »
- delphi收发邮件时内容可以显示图片用什么控件?
- 关于ADOQUERY动态添加计算字段的问题,向高手请教
- 如何判断ScrollBar滑块是向上运动还是向下运动???(急求在线等待)大虾救我!!!!!!!
- 小弟跪求如此小问题!路过大哥请帮忙!
- delphi与Oracle 连接的问题
- 请高手关注数据库应用程序的难题攻克? -------当场测试通过就给分!!
- SQL Server在存储jpg图像后,对图像字段进行修改就不起作用了......
- Rave怎么在程序中把值传到Rave中 ,比如我要把传表头到Rave中?
- 广告:想知道带边条与固定行数的报表制作方法的网友请关注偶的论坛。
- 怎么样计算时间的差值????高手请进
- 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;