我正在开发一个自定义瘦客户机服务器,它为客户端提供呈现的网页。服务器正在多核Linux盒上运行,Webkit提供了html呈现引擎。
唯一的问题是客户端显示受限于4位(16种颜色)灰度调色板。我目前正在使用LibGraphicsMagick来抖动图像(RGB->4位灰度),这是服务器性能的一个明显瓶颈。分析表明,70%以上的时间用于运行GraphicsMagick抖动函数。
我探索过堆栈溢出和Interweb,以获得一个好的高性能解决方案,但似乎没有人对各种图像操作库和抖动解决方案做过任何基准测试。
我会更乐意知道:
首选C语言库。
发布于 2009-09-28 11:47:30
根据选择的算法,抖动将花费相当长的时间。
实现拜耳(矩阵)和弗洛伊德-斯坦伯格(扩散)抖动相当简单。
使用MMX/SSE编码处理并行像素时,Bayer滤波可以非常快。您也可以使用GPU着色器进行抖动/转换。
FWIW,您已经在使用GraphicsMagick了,但是有一个完整的开放源码软件图形库这里列表
发布于 2009-10-27 00:32:32
从Adisak提供的列表来看,没有任何测试,我会押注于AfterImage。后继的人们痴迷于速度,同时也描述了一个聪明的算法。
如果您的服务器能够配备一个体面的PCI-express图形卡,并以OpenGL为特征,您可以采取另一种方法。这里是来自Nvidia的一些规范。搜索“索引模式”。您可以做的是选择16或256彩色显示模式,将图像呈现为平面多边形(如立方体的一侧)上的纹理,然后将帧读回。
当从OpenGL卡读取帧时,从卡中读取带宽是很重要的,因此需要PCI。如文档所述,您还必须在索引模式下选择颜色,以获得良好的效果。
https://stackoverflow.com/questions/1487517
复制相似问题