目标
将一个进程生成的图像以非常高的速度高效地传递到另一个进程。这两个进程在同一台机器和同一桌面上运行。操作系统可以是WinXP、Vista、Win7。
详细说明
第一个过程仅用于控制与生成图像的设备的通信。这些图像的大小约为 500x300 像素,每秒可更新数百次。第二个过程需要这些图像来处理它们。第一个过程使用第三方 API 将图像从设备绘制到 HDC。这个 HDC 必须由我提供。
注意:两个进程之间已经打开了一个连接。它们通过匿名管道进行通信并共享内存映射文件 View 。
想法
我如何以尽可能少的工作实现这个目标?我的意思是两者都为计算机和我工作(当然 ;))。我正在使用 Delphi,所以也许有一些组件可用于执行此操作?我想我总是可以绘制到任何图像组件的 HDC,将内容保存到内存流,通过内存映射文件复制内容,在另一侧解压缩并在那里绘制到目标 HDC。我还阅读了有关可用于编码图像的 IPicture 接口(interface)。我需要尽快完成,所以开销越少越好。我不希望仅仅通过复制一些图像来对机器造成压力。
你有什么想法?我感谢对此的每一个想法!
最佳答案
使用 Memory Mapped File .
有关 Delphi 引用,请参阅 Memory-mapped Files in Delphi和 Shared Memory in Delphi .
对于更通用的方法,您可以查看使用管道或通过 TCP 发送位图数据。如有必要,这将使您能够更轻松地在节点之间分发图像数据。
关于windows - 跨进程发送图像的最有效方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2536331/