首页 > 解决方案 > 防止 OpenLayers 4 中静态图像内像素之间的颜色插值

问题描述

使用 OpenLayers 4.6.5,我正在创建一个带有 ImageStatic 源的图像层,该源位于地图的投影中并具有地理参考。因此,在我选择的投影中的地图背景上显示此图像没有问题。我还关闭了图像平滑,因此当通过 precompose 方法(我在上一个问题中发现)放大时,图像会显示单个像素。但是,放大后,我相信 OL 正在创建过渡颜色或在图像的主要色标之间插入颜色。这是不可取的,因为我正在尝试构建的页面将在鼠标悬停时读出与图像中的颜色相对应的值。在图像处理软件中显示图像并放大不会显示此行为。比较放大的图像:

来自图像处理器 (GIMP)

来自 GIMP 的缩放图像

放大来自OL的静态图像

放大来自OL的静态图像

在这里可以相当清楚地看到浅紫色背景像素与第一个绿色像素混合的差异。但是,这似乎也发生在其他像素颜色之间以及 OL 静态图像中。

虽然我对如何防止这种情况有一个想法,但这需要一些工作并且不能保证成功。所以我想我会先在这里问一下,以防我错过了一个设置,或者如果有一个未记录的配置设置,我可以使用它来防止这种情况发生在 OL 的内部构图画布中。这在 OL2 中没有发生,但也没有使用合成画布。OL4 中的 ImageWMS 源也不会出现这种情况。

编辑以获取更多信息

我正在显示的图像相当大,为 2145 x 1377。在查看我正在工作的类似显示器时,碰巧注意到,对于较小的图像,放大时不会出现这种效果。对数据集进行了一些测试是 2345 x 1597,因为它有同样的问题。在将图像缩小不同数量后,尺寸缩小会出现某种断点,此问题发生在 10%(仍然发生)和 15%(不发生)之间。两者比较:

原尺寸的 90%

在此处输入图像描述

原尺寸的 85% 在此处输入图像描述

虽然这可能是一种解决方法,但我仍然想知道是否可以做任何事情或设置任何事情,以便在完整图像大小时不会发生此问题,因为减小图像大小仍会影响鼠标悬停期间的值读出功能。

标签: openlayers

解决方案


我猜这是OL放大的问题。当您放大太多时,openlayers 会插入您的像素,但我想您应该在它的 github 问题页面中报告它。


推荐阅读