代码之家  ›  专栏  ›  技术社区  ›  nonopolarity

为什么getPixel()在使用Ruby(或者可能是Perl或Python)时速度如此之慢,以及如何通过其他方法来实现这一点?

  •  1
  • nonopolarity  · 技术社区  · 15 年前

    我尝试将Win32的getPixel()与Ruby结合使用,即使在四核Intel机器上,它也非常慢。举个例子,如果我得到一个非常小的区域,比如100 x 10像素=1000像素,可能需要30秒才能完成。有没有一种更好的方法,比如同时获取一个区域?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Auraseer    15 年前

    我想你想要的功能是bitblt。

        2
  •  1
  •   user113476    15 年前

    我对鲁比不太了解,但它不是被解释的吗?如果是这样,并且您正在通过Rubys库中的一个来调用win32 API调用,在调用getPixel的基础上,那么是的,它将很慢。

    如果您可以通过Ruby访问win32 API,那么您应该查看bitblt。位块传输,它将返回值的缓冲区,而不是单个值。这会快很多倍。

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

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