CNDEV
...
...
账号
登
登录
先
先随便看看
中国开发网
: 论坛:
程序员情感CBD
: 贴子 181043
pcplayer
·
2005-08-22 06:05:05
·
阅读: 392
提
<空>
相关信息:
TBitmap.SaveToStream 好象巨消耗CPU,有没有其它效率更高的办法?
(空) (
pcplayer
[742]
2005-08-22 12:08
)
提
(空) (
pcplayer
[391]
2005-08-22 14:05
)
转成JPG
(空) (
pigprince
[423]
2005-08-22 14:10
)
问题是,我这里一定是要处理BMP,不能处理JPG
(空) (
pcplayer
[465]
2005-08-22 14:16
)
存成jpg
(6字)
(
ahfei
[421]
2005-08-22 14:57
)
我现在是要把BMP里的数据提取出来,放到一个Buffer里,逐字节进行处理。
(空) (
pcplayer
[718]
2005-08-22 15:07
)
不是 SaveToStream 耗cpu吧?你的 Stream 是什么 Stream?逐字节处理很慢的。
(空) (
没脾气2x
[483]
2005-08-22 15:50
)
我写的测试程序代码很简单,先抓图为Bitmap,再将Bitmap.SaveToStream(MyStream)
(354字)
(
pcplayer
[1033]
2005-08-22 15:57
)
300ms 一次,1024x768 的24bit色屏幕一次 2.3M,你觉得cpu跑到100%很不高兴咩?
(空) (
没脾气2x
[486]
2005-08-22 16:20
)
300MS 一次,1秒才三次嘛。我决定降低颜色。24bit的屏幕,抓下来成16bit的颜色,该怎么做?
(空) (
pcplayer
[522]
2005-08-22 16:37
)
2.3M 一个,一秒3.3次,一秒7.59M,你的硬盘速度多快?
(空) (
没脾气2x
[459]
2005-08-22 16:41
)
这个和硬盘无关吧?我又没存盘。我的内存1G,做内存操作也用不到硬盘缓冲。
(空) (
pcplayer
[490]
2005-08-22 16:51
)
位图最好设置成和桌面同样颜色深度,过高、过低都会降低复制速度。
(30字)
(
GoodHope
[841]
2005-08-22 16:53
)
在delphi中对 TBitmap 想快速的作图像处理,要用 ScanLine
(空) (
没脾气2x
[922]
2005-08-22 15:54
)
我试试这个 ScanLine
(空) (
pcplayer
[398]
2005-08-22 16:02
)
ScanLine 每个点过一下,居然用了19秒!
(空) (
pcplayer
[459]
2005-08-22 16:27
)
你肯定用的是TBitmap,而不是从TGraphic继承下来的别的图形类么?
(空) (
GoodHope
[481]
2005-08-22 16:34
)
是肯定可以确定是TBitmap的。
(空) (
pcplayer
[398]
2005-08-22 16:38
)
那就、就、就是……
(16字)
(
GoodHope
[495]
2005-08-22 16:42
)
你自己算一下一个大bmp要多少内存,狠吓人的
(空) (
pigprince
[491]
2005-08-22 14:16
)
如果cpu不是浪费在糟糕的写入上,而是因为bmp的内存耗用太大
(28字)
(
haitao
[417]
2005-08-22 14:22
)
CPU 消耗巨大
(空) (
pcplayer
[446]
2005-08-22 14:24
)
如果内存耗费过多,也会导致cpu消耗巨大。。。
(37字)
(
haitao
[542]
2005-08-22 14:26
)
内存消耗应该不大。抓屏幕的图,大概也就3M
(空) (
pcplayer
[405]
2005-08-22 14:32
)
我现在是抓的屏幕的BMP。不算太大。
(空) (
pcplayer
[393]
2005-08-22 14:23
)
提。
(空) (
pcplayer
[390]
2005-08-22 15:06
)
贴抓图部分源码出来!
(17字)
(
GoodHope
[493]
2005-08-22 16:43
)
又纠我尾巴
(空) (
小东
[416]
2005-08-22 16:48
)
你不说我都忘记了
(13字)
(
GoodHope
[459]
2005-08-22 16:49
)
抓图部分的代码经过测试发现对CPU的消耗少。
(479字)
(
pcplayer
[571]
2005-08-22 16:56
)
你怎么没 TBitmap.Create ??
(空) (
没脾气2x
[479]
2005-08-22 17:00
)
我前面说了为了避免TBitmap.Create被反复做,是事先就把TBitmap.Create做好了的。
(空) (
pcplayer
[536]
2005-08-22 17:17
)
那你还 return 干嘛
(空) (
没脾气2x
[483]
2005-08-22 19:21
)
我和你相同的代码,1280×960,15%的CPU利用率。
(空) (
GoodHope
[452]
2005-08-22 17:05
)
而且是32bit模式
(空) (
GoodHope
[444]
2005-08-22 17:08
)
你的 15% CPU 是仅仅抓图吧?我这里如果只抓图也没问题。有问题的是把图输出到MemoryStream里。
(95字)
(
pcplayer
[556]
2005-08-22 17:19
)
如果,只截图的话,CPU消耗是
(2字)
(
GoodHope
[497]
2005-08-22 17:21
)
嘿嘿,现在发现以前挺耗时间的绘制位图过程,现在居然飞快。
(24字)
(
GoodHope
[556]
2005-08-22 17:19
)
原来你丫是机器好。
(空) (
pcplayer
[496]
2005-08-22 17:25
)
内存的 TBitmap 跟盘上的 bmp 文件是不一样的
(14字)
(
holly
[454]
2005-08-22 17:31
)
的确可能时间就消耗在这里了。这是我看TBitmap.SaveToStream的Source的感觉。
(19字)
(
pcplayer
[617]
2005-08-22 18:18
)
俺说啦,如果想后面处理的快的话,要用 ScanLine,你用 ScanLine 慢的原因可能是没用对。
(空) (
没脾气2x
[481]
2005-08-22 19:23
)
这玩意该怎么用?给几句例子代码?
(空) (
pcplayer
[393]
2005-08-22 23:46
)
欢迎光临本社区,您还没有登录,不能发贴子。请在
这里登录