问题标签 [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.
colors - 在网络浏览器中查看之前,RGB 图像是否会自动转换为 sRGB?
如果我们有一个 RGB 图像,大多数浏览器,事实上,显示器只支持 sRGB 空间。我试图理解一些重要的事情。然后监视器/网络是否将图像中的每个像素转换为 sRGB 然后显示它?这意味着我们实际上看到的是图像的 sRGB 版本。
另外,如果是这种情况,我们可以使用哪个公式进行转换,如果我们自己进行转换,我假设我们会得到一个“看起来”与原始图像完全相同的图像?
macos - Chrome 突然变黄并且 chrome://flags/#force-color-profile 不起作用
我没有对 Chrome 或任何其他系统更新进行任何更新。
我只是关闭我的笔记本电脑回家,当我重新打开它时,我的铬变黄了!
我试过重启我的电脑,没有任何反应!
我已经尝试chrome://flags/#force-color-profile
将其设置为sRGB
并重新启动,没有任何反应!
我该如何解决这个问题?
textures - Godot中的线性伽玛与sRGB纹理工作流程?
我的纹理资源应该是线性的还是 sRGB?无论哪种情况,导入它们的正确方法是什么?
(在 r/godot 上有一个类似的问题,但我没有看到任何彻底的答案。)
Godot 似乎假设所有 PNG 纹理都是线性的,无论嵌入在 PNG 中的任何伽马或 sRGB 信息如何。我通过十六进制编辑PNG来测试它以具有各种类型gAMA
和sRGB
块。这与大多数图像编辑器不一致,它们往往默认使用非线性色彩空间。因此,如果您在例如 Gimp 中创建一个 PNG 并将其粘贴到 Sprite3D 上,默认情况下它看起来会褪色。
Godot(至少在 3.2 中)有一个Srgb
导入选项,当设置为 时Enable
,会使此类纹理看起来正常。但我担心的是:
- 此选项似乎已从主干中删除。
- 如果 sRGB > 线性转换发生在 uint8 > float32 转换之前,这将丢弃很多颜色精度。
- 如果它没有检测到实际的 sRGB PNG,那么它
Srgb
的默认设置有什么意义?Detect
还有hint_albedo
,但我希望用户不必编写着色器只是为了使纹理按预期工作。
推荐的纹理工作流程是什么?
opengl - 什么是正确的伽马校正功能?
目前,我在光照通过后使用以下公式对颜色进行伽玛校正(将它们从 RGB 转换为 sRGB 颜色空间):
这个公式是伽马校正的正确公式吗?我问是因为我遇到一些人说不是,而且正确的公式更复杂,与幂2.4而不是2.2有关。我还听说 R、G 和 B 这三种颜色应该有不同的权重(比如 0.2126、0.7152、0.0722)。
我也很好奇 OpenGL 在启用时GL_FRAMEBUFFER_SRGB
会使用哪个功能。
编辑:这是盖伊戴维森的演讲“你所知道的关于颜色的一切都是错误的”中涵盖的众多主题之一。伽马校正功能在这里介绍,但整个讨论与色彩空间有关,包括 sRGB 和伽马校正。
imagemagick - 为什么将 CMYK 图像转换为 sRGB 以在 Web 上显示在本地工作,而不是在 prod 服务器上?
我们的图形艺术家以 CMYK 色彩空间 JPG 格式提供可打印的图像,该格式适用于打印。我正在将这些转换为在网络上显示。我了解“最好”的做法是将 src.jpg 转换为 sRGB 颜色空间。我已经尝试过使用命令行convert
和使用 Imagick 方法transformImageColorspace()
,发现它在我的本地机器(Fedora 32 Linux)上运行良好,但在生产服务器(CentOS 7.3 Linux)上不起作用。
我们已经让这个过程使用命令行在生产中工作了几年,convert
但我们最近加强了安全性并禁用exec
了 PHP,所以我试图通过 Imagick 绑定使相同的过程工作,但生成的图像没有t 正确显示。我不知道是否没有正确应用 ICC 颜色配置文件,或者到 sRGB 的转换出错,或者可能发生其他任何事情。
本地机:版本:ImageMagick 6.9.10-86 Q16 x86_64 2020-01-31 https://imagemagick.org
产品服务器:版本:ImageMagick 6.9.11-19 Q16 x86_64 2020-06-15 https://imagemagick.org
两台机器都显示“lcms”在Delegates (built-in)
列表中,这是一件可能会引起麻烦但看起来不错的事情。
源图像:CMYK 格式的 src.jpg,主要是灰色/白色图像。
在 Gnome 的图像查看器中加载此图像显示不正确的颜色,偏蓝色调,但我认为这是因为 Gnome 没有正确处理 CMYK。将相同的图像加载到 GIMP 中会自动将其转换为 sRGB,并正确显示灰色/白色。我的目标是生成输出文件 src_srgb.jpg,该文件在加载到 Image Viewer 时显示为灰色/白色(因此它显然是一个简单的 RGB 配置文件图像)。
源代码:
先决条件:src.jpg 应该在 'srgb' 目录下,AdobeRGB1998.icc 配置文件应该在当前目录下。
如您所见,脚本中既有命令行尝试,也有 Imagick 尝试,并带有一个$useCmdLine
在它们之间切换的布尔值。
本地机器上的结果: src_srgb.jpg 已创建并且看起来没问题。颜色与 src.jpg 图像匹配。
$ /opt/remi/php71/root/bin/php imagick_srgb.php 即将 profileImage()... profileImage 返回 1 true 颜色空间开始为 13,CMYK 为 12 transformImageColorspace 返回 1 true 转换后颜色空间为 13,SRGB 为 13 保存RGB 配置文件版本为 srgb/src_srgb.jpg
identify -verbose srgb/src_srgb.jpg
显示:
prod 服务器上的结果: src_srgb.jpg 已创建,但看起来偏蓝。
identify -verbose srgb/src_srgb.jpg
显示:
我在配置文件列表中看到本地计算机上的“好”版本Profile-icc
,而来自 prod 的“坏”版本没有。这是否与问题的根本原因有关,如果是,我该怎么办?我相信exif
,iptc
和xmp
配置文件是元数据,可以安全地忽略此测试的目的。
通过一些试验和错误,我认为我已经按照正确的顺序进行了transformImageColorspace
andprofileImage
调用。
建议将不胜感激。
我不能分享完整的 src.jpg 但这里是裁剪的一部分(用 imagemagick 裁剪convert
以保留其颜色配置文件等)
编辑阅读PHP Imagick 不会添加 ICC 颜色配置文件我想我会展示生产服务器的 lcms 存在:
编辑 2两个系统上的 imagemagick 有点奇怪。我的本地机器在 src.jpg 上报告了一个 icc 配置文件,但对于完全相同的图像,生产没有。我尝试将我自己的附件下载为 SO.jpg 以检查,将其复制到 prod,并区分以下输出identify -verbose SO.jpg
:
这对我来说真的很臭,对imagemagick知之甚少。我将考虑在生产中降级 ImageMagick 包以匹配本地,但我们正在进入生产服务器上的白天工作时间,所以我可能无法做到。
编辑 3回顾我们的历史工作,它似乎已于 2020 年 6 月 1 日停止工作,那天我看到它ImageMagick-6.9.11.14-1.el7.remi.x86_64
已升级到ImageMagick-6.9.11.16-1.el7.remi.x86_64
(以及-libs
和-devel
包)。因此,看起来这个重大更改是在 6.9.11.14-1 和 6.9.11.16-1 之间引入的。我们从中获得它们的 remi 存储库似乎仅包含两个最新版本,6.9.11.18-1 和 6.9.11.19-1,降级到 6.9.11.18-1 并不能解决我的问题。
编辑 4可能已获得 PHP Imagick 绑定以成功进行转换。来自https://www.imagemagick.org/discourse-server/viewtopic.php?p=67114#p67114的评论“您应该在之前定义色彩空间 CMYK,应用您需要的任何操作,然后定义 RGB 色彩空间”示例convert -colorspace CMYK mona_lisa.cmyk.jpg -modulate 110 -colorspace RGB monalisa_rgb.jpg
..所以我拼命尝试(首先将配置文件设置为 null 以删除任何现有的):
令我惊讶的是,在 prod 上使用我的本地版本 6.9.10-86 和旧版本 6.9.11-14 时,输出文件在 Gnome Image Viewer 和 Web 浏览器中显示正确,所以我认为这是解决了一个问题。我仍然不明白为什么最新版本的 ImageMagick 6.9.11-19 似乎不起作用,会继续使用它。
编辑 5 ImageMagick 的人接受并修复了我的错误报告 :) https://github.com/ImageMagick/ImageMagick6/issues/83
color-space - sRGB constant luminance stripe
I want to create a color spectrum of constant perceived luminance.
This is my attempt so far (here's the codesandbox):
The code
- goes through 8-bit RGB values of increasing hue and constant (and irrelevant) lightness,
- transforms the triples to the corresponding linear values (un-"gamma", code for that taken from here),
- calculates the luminance by forming the scalar product with the sRGB luminance values,
- normalized the color by dividing by the luma and finally
- convert back to 8-bit RGB (re-"gamma").
As I annotated in the image, the second stripe from the bottom has a rather bright blue if you ask me though. Now that could be because
- my screen is off of sRGB (although my phone agrees),
- my eyeballs are off the human average,
- sRGB luminance values don't reflect luminance perception to begin with
I think it's more likely I've made some mistake or haven't understood something here.
I tweaked the sRGB luminance values slightly to get the bottom stripe that is on the verge of being what I would expect (perhaps still a bit bright that blue though).
So my question:
- What do you guys see on your screens, subjectively? Which of the bottom two stripes do you think is closer to perceived constant brightness?
- Presuming I'm not the only one, what's wrong here?
css - 带有 CSS Color Module Level 4 的 color() 函数的 Alpha 通道
我正在试验一个 Sass @mixin
,它提供对display-p3 颜色空间的支持,并优雅地降级到sRGB
不支持display-p3
. 目前,只有 Safari 支持此规范。
在上面@mixin
我假设我可以将color()
函数作为参数传递给rgba()
函数,如果颜色需要 alpha 通道。一些示例用法如下:
我的假设是不正确的。color()
将函数作为参数传递给rgba()
参数是无效的。我也不能将第四个数字参数传递给color()
函数。它只接受三个。
在这种情况下,使用该opacity
属性作为替代方案也不是一个合理的解决方案。将不透明度值传递给相关选择器将影响所有子元素的不透明度。
我很欣赏这是相当新的和实验性的。但是,有谁知道我可以通过一个 alpha 通道和一个color()
函数来实现display-p3
颜色空间透明度的方法???
php - 使用 PHP 和 Imagick 将 CMYK PDF 转换为 SRGB JPG
我正在尝试使用 Imagick 和 PHP 将 PDF 文档的第一页转换为 JPEG。只要 PDF 的色彩空间是 SRGB,转换就成功并且生成的图像具有正确的颜色。但是,如果 PDF 具有 CMYK 颜色空间,则在转换后,图像颜色会关闭(更亮或更暗)。
我目前正在使用以下软件:
- PHP 7.4.3
- ImageMagick 6.9.10-23 Q16 x86_64 20190101(deb 包)
- Ghostscript 9.50 (2019-10-15)
我正在 Windows 10 上开发 WSL2。
我的测试 PDF 可以在这里找到。
因为我对结果转换不满意,所以我首先尝试看看是否可以使用 Imagick cli 进行成功转换。经过大量的试验和错误,我发现以下命令产生了最好的结果:
结果:
然后我将命令重写为 PHP:
结果:
PHP代码的结果与CLI版本和原始PDF的结果不同。结果与我按照 CLI 命令运行 te 相同:
该命令看起来几乎相同,但是颜色空间的转换发生在后面。
我的问题是:我在我的 PHP 代码中错过了什么步骤来获得与命令相同的结果
附加信息:我还尝试使用颜色配置文件进行颜色空间转换。代替
我用了
除了这两个配置文件之外,我还尝试了其他 CMYK(CoatedFOGRA39、JapanColor2001Coated...)和 SRGB(AdobeRGB1998、AppleRGB、sRGB_v4_ICC_preference_displayclass...)配置文件的组合。
但是,我找不到与 CLI 输出结果和原始 PDF 文件接近的配置文件组合。
image - sRGB与Linear RGB之间转换的准确性以及仅显示图像的亮度分量
在这里使用一个答案:在线性和非线性 RGB 空间中使用颜色时有什么实际区别?为了从 sRGB 转换为线性 RGB,我假设公式中提到的单词强度是颜色的红色、绿色和蓝色分量。
我的转换代码是:
我想要实现的是仅在其亮度分量 (Y) 中显示图像。这样做的代码是:
目前,我不确定我使用的计算是否确实适用于仅尝试显示图像的亮度分量。我没有得到所需的输出,因为它已在研究论文中实现:https ://wakespace.lib.wfu.edu/bitstream/handle/10339/14775/buchanan_stem04.pdf?sequence= 1 使用第 22 页时同样的老虎形象。相比之下,我的输出显得很暗。
非常感谢任何有关检查我的计算是否正确的帮助。此外,如果有更好的方法在 sRGB 颜色空间中仅显示图像的 Y、U 或 V 分量,我将如何处理?
java - Java Swing JColorChooser 颜色 RGB 到 sRGB
有没有办法使用JColorChooser
返回可以转换为相应 sRGB 浮点值的颜色?
默认JColorChooser
值很好我只需要一种将它返回的颜色转换为 0 到 1 RGB 的方法。
我不明白如何使用 APIColor
来实现这一点。有人可以提供一个如何做到这一点的例子吗?甚至可能吗?