问题标签 [srgb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 一个 iOS 应用程序中的 sRGB 和 Display P3 颜色究竟会发生什么?
我不清楚当我在一个应用程序中混合这两种颜色空间时会发生什么。sRGB 颜色是否会比不与更大的 Display P3 色彩空间的颜色混合时看起来更苍白?我应该尽量避免吗?
opengl - sRGB 转换 OpenGL
假设我从具有 sRGB 颜色配置文件的 jpg 文件加载纹理,并且在加载时没有转换为线性 RGB。当屏幕上显示矩形时,我看不到图像有任何问题。颜色与在其中一个编辑器中打开它的颜色相同。
问题是,由于没有转换,RGB 值保持在 sRGB 范围内。硬件如何知道不需要转换或为什么它没有被 GPU 转换。基本上为什么没有发生 XYZ -> sRGB 转换。
我很困惑,因为如果我将 sRGB 数据输入到最终将其再次转换为 sRGB 的东西会改变颜色,但事实并非如此。
image - 哪个矩阵将 XYZ 映射到 sRGB 的线性 RGB 是正确的?
映射矩阵似乎有 3 个主要变体,它们偏离小数点后第 3 位或第 4 位。哪个被认为是标准矩阵?
- Bruce Lindbloom http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html
根据 (x, y) 计算红色、绿色、蓝色和 D65 参考白色 (X, Y, Z)
- W3C https://www.w3.org/Graphics/Color/srgb
EasyRGB https://easyrgb.com/en/math.php似乎使用 W3C,但被截断
webgl - 使用 Emscripten 的 SDL 进行 WebGL 渲染对于 sRGB 感知代码来说太暗了
我有 sRGB 感知的代码,即图像数据在 sRGB 空间中。由于某些原因,保存图像数据的纹理也保存了非 sRGB 的其他图像数据。因此,在着色器中,我应用通常的公式从 sRGB 转换为线性(不谈过滤问题)。在本机上,它正确显示。在 WebGL2 测试应用程序上,使用 SDL 获取“窗口”和 GL 上下文它是黑暗的,基本上与渲染内容时在本机中发出 glDisable(GL_FRAMEBUFFER_SRGB) 的结果相同。
在另一个测试中,图像数据位于使用 sRGB 纹理的 sRGB 空间中。在 WebGL2 测试应用程序上,使用 SDL 获取“窗口”和 GL 上下文它是黑暗的,基本上与渲染内容时在本机中发出 glDisable(GL_FRAMEBUFFER_SRGB) 的结果相同。相反,在本机上,亮度是正确的。在云雀中,我破解了代码以使纹理的内部格式为 GL_RGBA8 而不是 GL_SRGB8_ALPHA8 并且你瞧,它对 WebGL2 显示没有影响,并使本机(正确地)变暗。
这些结果适用于 Safari 和 Chrome。
javascript - Electron 和 Webkit 浏览器显示错误的颜色
我正在使用 Electron 开发一个应用程序。我在 Adobe XD 中有一种颜色,例如 rgb(0,55,200)。当我在我的应用程序中设置此颜色时,Electron 会显示不同的颜色:rgb(4,48,193)。
在 Safari 和 Chrome 中也会发生同样的情况,但 Firefox 会显示正确的值。更奇怪的是,使用 Electron 的应用程序 Visual Studio Code 显示正确的值(我打开了 vscode 中的 devtools 并检查了)。
我认为它可能是我的电子版本。Vscode process.versions.electron 是 11.3.0,我的是 11.2.1。我更新到 11.4.4 还是一样。
我在另一台电脑上试过,颜色因不同的因素而不同。
Electron 11.2.1 发生的一件非常奇怪的事情是,虽然网站上的颜色是关闭的,但当将颜色选择器指向 devtools 内的小颜色框时,颜色是正确的。您可以在第二个屏幕截图中看到此框,但屏幕截图来自版本 11.4.4,它没有这种奇怪的行为。
我尝试了所有这些标志,但没有运气:
这不是显示器颜色配置文件的问题
如果我将颜色选择器模式更改为 sRGB,Electron 颜色几乎正确,但 Adobe XD 颜色完全关闭。如果我将显示器颜色配置文件更改为 sRGB,则一切正常。但这不是解决方案,因为我不能要求我的应用程序的用户更改她/他的颜色配置文件。而且,Firefox 和 vscode 运行良好。必须有解决办法。
欢迎任何建议。
谢谢阅读!
javascript - THREE.js:使用 renderer.OutputEncoding = sRGBEncoding 使纹理变灰
我正在使用Three.js 布料示例,但我没有使用 alphaMap,而是让布料平面完全不透明并更改了它的颜色贴图。结果非常令人失望,因为由于渲染器的输出编码(sRGB 编码),纹理现在呈现非常灰暗。如果我将输出编码改回线性编码,草的纹理看起来太暗了。
原始纹理如下所示:
有什么方法可以保留 sRGBEncoding,但让我的布料纹理渲染对比度更高?
python - PIL 如何打开 sRGB 图像?
我有一些图片,我想使用以下方法在 RGB 元组中提取数值:
但是,我刚刚意识到这些图像没有内置 icc 配置文件。换句话说,当我使用
我没有。
根据https://github.com/python-pillow/Pillow/issues/3270,一些相机不会将色彩空间存储到 icc 配置文件中,而是将其存储到 EXif 文件中。我试图打印它的 exif.get(0xA001) 并且它确实在 sRGB 空间中。
但是,我只是想知道,当我使用 np.array(Image.open("./image.jpg"))
获取这张图片的数值时,PIL 会意识到这张图片在 sRGB 空间中并自动转换为 RGB 值吗?(似乎 np.array(Image.open("./image.jpg"))
并 np.array(Image.open("./image.jpg").convert("RGB"))
给了我相同的结果)或者我必须采用我得到的数值并做伽玛校正公式来自己从 sRGB 转换为 RGB 值?
谢谢!
three.js - 我们什么时候需要使用 renderer.outputEncoding = THREE.sRGBEncoding
我是three.js的新手。我一直在通过尝试制作简单的场景并了解官方示例的工作原理来学习three.js。
最近我一直在看https://threejs.org/examples/?q=trans#webgl_materials_physical_transmission,我不明白代码需要在renderer.outputEncoding = THREE.sRGBEncoding
这里使用的确切原因是什么。在更简单的场景中,例如将 JPG 作为纹理加载到立方体上,JPG 图像看起来会很好,而无需在渲染器上设置 outputEncoding。
我尝试在谷歌上搜索类似的主题,例如伽马校正,以及人们说大多数在线图像都是在 sRGB 颜色空间中进行伽马编码的东西。但是我自己无法连接所有的点......如果有人能向我清楚地解释这一点,我将不胜感激。