怎樣使圖片,最小的存入數據庫!急!在線等待 !(50分)

  • 主题发起人 主题发起人 shiyu281
  • 开始时间 开始时间
S

shiyu281

Unregistered / Unconfirmed
GUEST, unregistred user!
一個系統內可能有很多圖片,以BMP,JPEG存入數據庫,始終都很大,求解決方案!
 
实在不行,库中存路径。
图片拷贝到共享目录中。

图片存入库的效率也不高啊。。。
 
現在我是存入圖片的路徑,但光存路徑,萬一不小心丟失,就麻煩了,我想要存圖片!
 
压缩之后存....

图片存到数据库中,还是有一定实用价值的...不能一味的以存路径代替.
 
以时间换空间怎样?
找一个压缩程序,存入之前压缩以下,取出时解压缩
 
to elm :
能不能給點實際的,圖片怎樣壓縮後存入,又怎樣在顯示時,解壓顯示!
 
用流的压缩和解压缩技术,将压缩后的流存入数据库就行了,还可以选择压缩比


压缩
procedure ys_stream(instream, outStream: TStream; ysbz: integer);

{
instream: 待压缩的已加密文件流
outStream 压缩后输出文件流
ysbz:压缩标准
}
var
ys: TCompressionStream;
begin
//流指针指向头部
inStream.Position := 0;
//压缩标准的选择
case ysbz of
1: ys := TCompressionStream.Create(clnone, OutStream); //不压缩
2: ys := TCompressionStream.Create(clFastest, OutStream); //快速压缩
3: ys := TCompressionStream.Create(cldefault, OutStream); //标准压缩
4: ys := TCompressionStream.Create(clmax, OutStream); //最大压缩
else

ys := TCompressionStream.Create(clFastest, OutStream);
end;
try
//压缩流
ys.CopyFrom(inStream, 0);
finally
ys.Free;
end;
end;


解压缩

procedure TForm1.jy_Stream(instream, outStream: TStream);
{
instream :原压缩流文件
outStream:解压后流文件
}
var
jyl: TDeCompressionStream;
buf: array[1..512] of byte;
sjread: integer;
begin
inStream.Position := 0;
jyl := TDeCompressionStream.Create(inStream);
try
repeat
//读入实际大小
sjRead := jyl.Read(buf, sizeof(buf));
if sjread > 0 then
OutStream.Write(buf, sjRead);
until (sjRead = 0);
finally
jyl.Free;
end;
end;
 
接受答案了.
 
MyStream := TMemorystream.Create;{建立内存流}
MyBmp := TBitmap.Create;
Myjpg := TJpegimage.Create;
Myjpg.Assign(MyBmp); {将BMP图象转成JPG格式}
Myjpg.CompressionQuality := 10; {JPG文件压缩百分比设置,数字越大图像越清晰,但数据也越大}
Myjpg.SaveToStream(MyStream); {将JPG图象写入流中}
Myjpg.free;
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
822
import
I
S
回复
0
查看
951
SUNSTONE的Delphi笔记
S
后退
顶部