一个小问题,请帮一下 ( 积分: 50 )

  • 主题发起人 主题发起人 yhwyb
  • 开始时间 开始时间
Y

yhwyb

Unregistered / Unconfirmed
GUEST, unregistred user!
我用image1,在其上作了几条线,用textout输入了几个字,结果存入数据表中,数据库用的accees,blob字段,我试了一下,存为文件是74K,当然放到数据库里也一样大,
问题:怎么做才能使这个图存文件或存数据库,为最小????
 
用2进制流做就比较小,也是一个好的思路。
 
自定义格式,记录下,线有几条,线条的起始xy坐标,线条的终止xy坐标,文字的文本,文字的输出xy坐标,文字的字体名和大小(可选),只要记录这些信息就可以了,用个自定义格式,要不了1K足够,再按照流写入数据库,读出的时候分析并重新手工画到Image上(或者PaintBox上)即可。这是最简单方法。
 
明白你们二位说的,就是不用存为图形文件,用流方法,这样肯定小得多,但我不会用这个方法,能给出例子就好了,给例能用,就给分了,谢谢
 
忘了说一下,我是在image下画线的,画的是五星,还要写字,如果用流,那在什么控件下做???好象只有用image才行,
 
image保存为jpg文件(uses jpeg单元),适当设置一下压缩率,这样文件才是最小的。
“流”是什么,就是二进制的数据,二进制数据是什么?所有的文件在硬盘上都是二进制保存的。因此,“流”只是为方便处理数据的一种方式,要减少文件体积,只能在数据压缩方面动脑筋。
 
谢谢ufo!,你说得太好了,但我试了一下,gif文件比jpg还要小,你说压缩率设置,在哪里??同意你的说法,还是用图好处理些
 
ufo!真是高手,想交个朋友,我的QQ:3072282
 
离高手差远了,另外,我不经常上qq的。
至于gif和jpg文件的大小,不能一概而论的,各有千秋。gif是矢量图文件,记得好像只支持256色。jpg是点阵图经有损失压缩而成。
给你个例子,将image内的图片压缩保存到磁盘文件,你修改一下就可以保存到数据库了。注意uses jpeg单元:
procedure TPictureView.M_saveimage(filename: string);
var Ajpeg:TJPEGImage;
begin
AJpeg:=TJpegImage.Create;
AJpeg.Assign(image1.Picture.Bitmap);
AJpeg.CompressionQuality :=80; //质量(1。。100),数字越小,图片体积越小质量越差
AJpeg.Compress;
AJpeg.SaveToFile(filename);
AJpeg.Free;
end;
 
后退
顶部