问题标签 [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.

0 投票
3 回答
1126 浏览

colors - 在网络浏览器中查看之前,RGB 图像是否会自动转换为 sRGB?

如果我们有一个 RGB 图像,大多数浏览器,事实上,显示器只支持 sRGB 空间。我试图理解一些重要的事情。然后监视器/网络是否将图像中的每个像素转换为 sRGB 然后显示它?这意味着我们实际上看到的是图像的 sRGB 版本。

另外,如果是这种情况,我们可以使用哪个公式进行转换,如果我们自己进行转换,我假设我们会得到一个“看起来”与原始图像完全相同的图像?

0 投票
1 回答
263 浏览

macos - Chrome 突然变黄并且 chrome://flags/#force-color-profile 不起作用

我没有对 Chrome 或任何其他系统更新进行任何更新。

我只是关闭我的笔记本电脑回家,当我重新打开它时,我的铬变黄了!

我试过重启我的电脑,没有任何反应!

我已经尝试chrome://flags/#force-color-profile将其设置为sRGB并重新启动,没有任何反应!

我该如何解决这个问题?

0 投票
1 回答
680 浏览

textures - Godot中的线性伽玛与sRGB纹理工作流程?

我的纹理资源应该是线性的还是 sRGB?无论哪种情况,导入它们的正确方法是什么?

在 r/godot 上有一个类似的问题,但我没有看到任何彻底的答案。)

Godot 似乎假设所有 PNG 纹理都是线性的,无论嵌入在 PNG 中的任何伽马或 sRGB 信息如何。我通过十六进制编辑PNG来测试它以具有各种类型gAMAsRGB块。这与大多数图像编辑器不一致,它们往往默认使用非线性色彩空间。因此,如果您在例如 Gimp 中创建一个 PNG 并将其粘贴到 Sprite3D 上,默认情况下它看起来会褪色。

Godot(至少在 3.2 中)有一个Srgb导入选项,当设置为 时Enable,会使此类纹理看起来正常。但我担心的是:

  • 此选项似乎已从主干中删除。
  • 如果 sRGB > 线性转换发生在 uint8 > float32 转换之前,这将丢弃很多颜色精度。
  • 如果它没有检测到实际的 sRGB PNG,那么它Srgb的默认设置有什么意义?Detect

还有hint_albedo,但我希望用户不必编写着色器只是为了使纹理按预期工作。

推荐的纹理工作流程是什么?

0 投票
1 回答
1571 浏览

opengl - 什么是正确的伽马校正功能?

目前,我在光照通过后使用以下公式对颜色进行伽玛校正(将它们从 RGB 转换为 sRGB 颜色空间):

这个公式是伽马校正的正确公式吗?我问是因为我遇到一些人说不是,而且正确的公式更复杂,与幂2.4而不是2.2有关。我还听说 R、G 和 B 这三种颜色应该有不同的权重(比如 0.2126、0.7152、0.0722)。

我也很好奇 OpenGL 在启用时GL_FRAMEBUFFER_SRGB会使用哪个功能。

编辑:这是盖伊戴维森的演讲“你所知道的关于颜色的一切都是错误的”中涵盖的众多主题之一。伽马校正功能在这里介绍,但整个讨论与色彩空间有关,包括 sRGB 和伽马校正。

0 投票
0 回答
727 浏览

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,iptcxmp配置文件是元数据,可以安全地忽略此测试的目的。

通过一些试验和错误,我认为我已经按照正确的顺序进行了transformImageColorspaceandprofileImage调用。

建议将不胜感激。

我不能分享完整的 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

0 投票
2 回答
117 浏览

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):

enter image description here

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?
0 投票
1 回答
426 浏览

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颜色空间透明度的方法???

0 投票
1 回答
640 浏览

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 文件接近的配置文件组合。

0 投票
0 回答
155 浏览

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 分量,我将如何处理?

0 投票
1 回答
107 浏览

java - Java Swing JColorChooser 颜色 RGB 到 sRGB

有没有办法使用JColorChooser返回可以转换为相应 sRGB 浮点值的颜色?

默认JColorChooser值很好我只需要一种将它返回的颜色转换为 0 到 1 RGB 的方法。

我不明白如何使用 APIColor来实现这一点。有人可以提供一个如何做到这一点的例子吗?甚至可能吗?