两年半前,Adobe 宣布 FlashPlayer 10 将支持色彩校正。不可否认,该实现非常基础,因为它始终假定所有内容都经过 sRGB 编码,并将该内容转换为系统上使用的当前显示配置文件。这是 John Nack 的介绍博客文章。
激活此功能所需的所有 AS3 是:
stage.colorCorrection = ColorCorrection.ON;
...是的,您确实需要舞台访问才能使其正常工作,不,这不是问题。
所以当它是新的时候,我写了一个小包装器来在 Internet Explorer 和 Chrome 中显示图像,这样它们就可以为具有扩展色域显示的人们正确渲染,并且还在基于 Flash 的视频播放器中使用它以达到相同的目的。今天重温任何一个,我发现我所知道的已经起作用的东西不再起作用了。与此同时,FlashPlayer 的版本发生了变化,很可能浏览器版本也发生了变化。我在所有这些、不同的浏览器版本、Flash 播放器版本上尝试了 OS X、Win 7、Win XP、icc v2 和 icc v4 显示配置文件,但无济于事。你会说我一定是做错了什么,但是Adobe稍后发布的示例页面,我知道现在肯定可以工作,但现在也失败了。如果您查看 Flash 小程序,您会发现它说:
stage.colorCorrectionSupport: unsupported
如果您的系统支持它,请评论操作系统、浏览器和版本以及 FlashPlayer 版本。否则,我正在寻找有关此功能发生了什么的任何线索。
至少参与董事会的 Adobe 员工似乎一无所知。Quote:因为这个功能似乎在大多数主流浏览器中默认被禁用,我认为这是一个实验性的网络标准提案,它已经死了或什么的。我们在这里没有做很多事情,它主要取决于浏览器向我们传递正确的数据并进行正确的颜色转换数学。我们离事件链还很远。
我知道这在 FlashPlayer 发展的某个阶段起作用。因此,以下内容可能有助于解决正在发生的事情:
- Adobe 示例仍然适用于任何有兴趣的人吗?
- 如果这是关于已弃用的浏览器功能,为什么它不再适用于旧浏览器?
- 它是否停止在任何特定的 FlashPlayer 上工作?(我尝试了几个但不能再使它工作)
笔记:
- 由于某种原因,颜色校正不适用于 wmode 透明(但不透明很好)
- 在使用 alpha bleding 过渡时,最初的颜色校正有时也会失败
更新:当 wmode 设置为“window”时,该功能似乎仍然有效。当然,这是非常有限的。如果您在页面上有灯箱等,Flash 内容将始终保持在其顶部等 - 所以这很糟糕。使用 wmode="window" 该示例也适用于我在 OSX 10.6(迄今为止我测试的唯一版本)和 Win XP 32 位。我尝试过的所有 win 64 位版本仍然失败,但这些系统有多个屏幕,所以也许我必须用一个屏幕重试,因为下面的第一条评论表明它适用于 Win 7 64。在这个有效的系统上,我尝试了 Firefox 、Safari、Internet Explorer 和 Chrome。除了使用 Chrome 时,内置 Flash 播放器总是stage.colorCorrectionSupport: unsupported
在禁用内置 FP 并使用系统时给出,所有工作都相同
因此,上面的问题可以缩小到为什么这不再适用于任何其他 wmode,尤其是“不透明”——它以前确实有效,这也是 Adobe 在其示例文件的在线版本中使用的...
更新 2: Flash Player 的较新 wmodes“gpu”和“direct”使该功能在上述 wmode“window”工作的系统/浏览器上失败。
更新 3:在找到 wmode = "window" 角度后,我决定在我最初引用的 Adobe 论坛上发布后续内容。这导致整个问题被确认为 Flash 播放器中的错误:https ://bugbase.adobe.com/index.cfm?event=bug&id=3596843所以我想不会有什么问题的答案发生在 stage.colorCorrection 但希望它会自行解决。
更新 4:好的,这是强制性的愚蠢......当我说我记得 wmode“不透明”在我出错之前已经工作过。进一步查看后,我发现很久以前我已经放入wmode="normal"
了我的一个 JS 文件,并且由于normal
不存在旧版本的 Flash Player 使用标准 wmode window
,所以这就是它当时工作的原因。更现代的 Flash Player 有其他默认设置direct
,例如颜色管理失败,所以对我来说失败了。所以我认为这在“window”以外的任何 wmode 中都不起作用,但我很好奇未来会为此带来什么......