1

我尝试将 Win32 的 GetPixel() 与 Ruby 一起使用,即使在四核 Intel 机器上也确实很慢。例如,如果我得到一个非常小的区域,例如 100 x 10 像素 = 1000 像素,则可能需要 30 秒才能完成。有没有更好的方法,比如一次获得一个区域?

4

2 回答 2

1

我认为你想要的功能是 BitBlt。

于 2009-12-04T22:36:23.243 回答
1

我对Ruby了解不多,但它不是解释的吗?如果是这样,并且您正在通过可能的 Rubys 库之一调用 Win32 API 调用,并且在调用 GetPixel 之上,那么是的,它会很慢。

如果您可以通过 Ruby 访问 Win32 api,那么您应该查看 BitBlt。Bit-Block-Transfer 将返回值的缓冲区而不是单个值。这会快很多倍。

当然,现在您必须处理设备上下文、位图结构和原始内存,它们可能是比 Ruby 提供的更低级别的结构。

http://winprog.org/tutorial/bitmaps.html

于 2009-12-04T22:38:48.433 回答