Openlayers 颜色查找表/颜色操作/颜色校正
我想操纵瓷砖层的颜色。我找到了三种解决方案,但都不充分 解决方案1:我使用一个图像层(Openlayers 颜色查找表/颜色操作/颜色校正,openlayers,Openlayers,我想操纵瓷砖层的颜色。我找到了三种解决方案,但都不充分 解决方案1:我使用一个图像层(ol.layer.image),它使用一个光栅源(ol.source.graster),其颜色可以被操作。请参见OpenLayers的示例。一旦图像被渲染,放大和缩小是平滑的,因为图像的像素不是在每一帧上都被操纵;图像仅调整大小。缺点是,缩小时,图像会变小,直到不再填充画布。只有当缩放停止时,才会完全重新绘制以填充画布。无法使用此解决方案,因为我的用户应该始终看到所有可用的地图数据,即使在缩小时也是如此。“缩小
ol.layer.image
),它使用一个光栅源(ol.source.graster
),其颜色可以被操作。请参见OpenLayers的示例。一旦图像被渲染,放大和缩小是平滑的,因为图像的像素不是在每一帧上都被操纵;图像仅调整大小。缺点是,缩小时,图像会变小,直到不再填充画布。只有当缩放停止时,才会完全重新绘制以填充画布。无法使用此解决方案,因为我的用户应该始终看到所有可用的地图数据,即使在缩小时也是如此。“缩小、等待、填充画布”的循环太分散注意力了
解决方案2:扩展解决方案1,我在图像层下面添加了一个平铺层,以便在缩小时画布始终充满地图数据。请参见OpenLayers的示例。缺点是,缩小时,图像层外的区域显示非颜色操纵的瓷砖层。无法使用此解决方案,因为我的用户必须不知道任何颜色校正
解决方案3:我使用了一个平铺层,并向我的ol.Map
实例添加了一个事件侦听器,用于侦听postcompose
事件。当该事件触发时,我通过读取像素颜色、更改它们并将它们写回上下文来直接操纵画布上下文。这可以工作,但是速度非常慢,因为postcompose
会在每一帧上触发,我必须重新操作画布上的所有像素
我的问题:
查看github上的OLExt,它们有一个颜色过滤器扩展,在示例中使用了一个平铺层。至于颜色配置文件,它们有一些预定义的配置文件,如灰度和深褐色。你也许可以通过他们的代码找到你自己的部分