急!!!!显示图片内存暴涨!!

浩南_哥 2010-09-06 09:24:32
本来想做个打印预览的功能,我是这样做的:
创建了一个TJpegImage的数组,个数是1000(测试用的),然后使用TBitMap的canvas做为画布画了一个简单的正方形,然后存到之前的那个数组中去,程序运行时内存使用暴涨到700多M,速度也相当的慢,请各位大侠帮帮指点指点。
代码如下:

var
index:integer;
begin
index:=0;
Bit:=TBitmap.create;
bit.width:=700;
bit.height:=800;
while(index<1000) do
begin
JArray[index]:=TJpegImage.create;
Bit.canvas.Rectangle(10,10,200,200);//由于1000个图各不相同所以这里我只画了个简单的。
Bit.Dormant;
Bit.FreeImage;
JArray[index].assign(bit);
inc(index);
end;
end;

另外征集打印预览的好方法。
...全文
171 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdmh 2010-09-06
  • 打赏
  • 举报
回复
1000个图像数组,一直保留在内存中,肯定不不小啊,估计你的图片也不小吧
haitao 2010-09-06
  • 打赏
  • 举报
回复
JArray[index]只有创建,没有释放?
1千个jpg。。。。。。。。。
浩南_哥 2010-09-06
  • 打赏
  • 举报
回复
找到原因了,由于颜色值太高了,结贴了,谢谢大家帮助
设置了下PixelForma属性,内存暴跌,呵呵,
浩南_哥 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 qiufenglangzi 的回复:]

设置压缩率试试 CompressionQuality
[/Quote]
这个好像一般在保存文件的时候用吧,我试了下把CompressionQuality设为50,内存依然很高。。。。。。。。
浩南_哥 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sz_haitao 的回复:]

如果是比较线条分明的图片,压缩率是很高的,jpg有10多M,在内存有几百M也是正常的
如果只有黑白,建议改为单色bitmap,会节省一些内存
[/Quote]
我试过bitmap,内存会更高 比JPEG高出100多M


4楼
对图像这方面不太懂,有没有什么方法,在内存里也压缩下,我不要求显示效果多高,能看就行。
haitao 2010-09-06
  • 打赏
  • 举报
回复
如果是比较线条分明的图片,压缩率是很高的,jpg有10多M,在内存有几百M也是正常的
如果只有黑白,建议改为单色bitmap,会节省一些内存
白耗子 2010-09-06
  • 打赏
  • 举报
回复
设置压缩率试试 CompressionQuality
wan2008 2010-09-06
  • 打赏
  • 举报
回复
保存到本地时,一共才10几M 是压缩过的。
内存里就是那么大
浩南_哥 2010-09-06
  • 打赏
  • 举报
回复
呵呵 不好意思,上午公司断网,没有及时回复。
那个数组我是测试用的,我是想做个打印预览,是分页的所以我就把每页的内容放到了那个数组里。
有个问题我不是很明白:
这个数组我使用Savetofile(‘***.jpg’)保存到本地时,一共才10几M,怎么内存里就那么大(700多M)????

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧