外观和样式(05):【类】QColorSpace[官翻]

QColorSpace是Qt库中用于表示和转换颜色空间的类。它支持预定义的颜色空间如sRGB、Adobe RGB和ProPhoto RGB,并能通过ICC配置文件创建自定义颜色空间。颜色空间由原色集和传递函数定义,原色集包括红、绿、蓝和白点,传递函数描述了颜色值的编码方式。QColorSpace提供了从一个颜色空间到另一个的转换函数,方便在不同色彩空间间进行颜色操作。此外,它还支持从 ICC 配置文件创建颜色空间,以及验证颜色空间的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QColorSpace class

QColorSpace类提供颜色空间的抽象。

Header#include < QColorSpace >
qmakeQT += gui
Inherits
Inherited By
SinceQt 5.14

详细说明

可以用不同的方式来解释颜色值,并且基于该解释可以存在于不同的空间中。我们称之为色彩空间。

QColorSpace提供了创建多个预定义颜色空间的权限,并且可以生成QColorTransforms来将颜色从一种颜色空间转换为另一种颜色空间。

QColorSpace还可以表示由ICC配置文件定义或嵌入在图像中的颜色空间,否则这些颜色空间将不适合预定义的颜色空间。

一般来说,颜色空间可以被认为是原色集和传递函数的组合。原色定义颜色空间的轴,以及传递函数如何将值映射到轴上。这些原色由三种原色定义,分别代表该特定颜色空间中红色,绿色和蓝色的外观,以及一种白色,分别代表纯白色在何处和如何明亮。可以由原色表示的颜色范围称为色域,并且可以表示较宽范围颜色的色域也称为宽色域色域。

传递函数或伽玛曲线确定颜色空间中每个分量的编码方式。之所以使用它们,是因为人的感知不是线性地进行操作的,并且传递函数试图确保颜色在人眼中看起来均匀分布。

公共类型

enum NamedColorSpace

预定义的色彩空间。

ConstantValueDescription
QColorSpace::SRgb1sRGB颜色空间,Qt默认在其中操作。它接近于大多数经典显示器的操作方式,也是大多数软件和硬件支持的模式。sRGB的ICC注册。
QColorSpace::SRgbLinear2sRGB色彩空间与线性伽玛。有用的gamma校正混合。
QColorSpace::AdobeRgb3Adobe RGB颜色空间是一个经典的宽色域颜色空间,使用了2.2的伽玛。Adobe RGB的ICC注册(1998)
QColorSpace::DisplayP34彩色空间采用DCI-P3的基色,但采用sRGB的白点和传递函数。在现代的宽频屏幕中很常见。ICC注册DCI-P3
QColorSpace::ProPhotoRgb5Pro照片RGB色彩空间,又称ROMM RGB,是一个非常宽色域的色彩空间。ROMM RGB的ICC注册

enum class Primaries

预定义的原色集。

ConstantValueDescription
QColorSpace::Primaries::Custom0基元未定义或与任何预定义集都不匹配。
QColorSpace::Primaries::SRgb1sRGB原色
QColorSpace::Primaries::AdobeRgb2Adobe RGB原色
QColorSpace::Primaries::DciP3D653带有D65白点的DCI-P3原色
QColorSpace::Primaries::ProPhotoRgb4具有D50白点的ProPhoto RGB原色

enum class TransferFunction

预定义的传递函数或伽玛曲线。

ConstantValueDescription
QColorSpace::TransferFunction::Custom0自定义或空传递函数
QColorSpace::TransferFunction::Linear1线性传递函数
QColorSpace::TransferFunction::Gamma2传递函数是基于gamma()的值的真实伽玛曲线
QColorSpace::TransferFunction::SRgb3sRGB传递函数,由线性和伽玛部分组成
QColorSpace::TransferFunction::ProPhotoRgb4ProPhoto RGB传递函数,由线性和伽玛部分组成

公共函数

构造函数

  1. QColorSpace(const QPointF &whitePoint, const QPointF &redPoint, const QPointF &greenPoint, const QPointF &bluePoint, QColorSpace::TransferFunction fun, float gamma = 0.0f)
  2. QColorSpace(QColorSpace::Primaries primaries, float gamma)
  3. QColorSpace(QColorSpace::Primaries primaries, QColorSpace::TransferFunction fun, float gamma = 0.0f)
  4. QColorSpace(QColorSpace::NamedColorSpace namedColorSpace)
  5. QColorSpace()

传递函数或伽玛曲线

  1. float gamma() const 使用TransferFunction::Gamma返回颜色空间的gamma值

    其他预定义颜色空间的近似gamma值,如果未知的近似gamma则返回0.0。

  2. QColorSpace::TransferFunction transferFunction() const

  3. void setTransferFunction(QColorSpace::TransferFunction transferFunction, float gamma = 0.0f)

  4. QColorSpace withTransferFunction(QColorSpace::TransferFunction transferFunction, float gamma = 0.0f) const

  5. QByteArray iccProfile() const 返回代表色彩空间的ICC配置文件
    如果色彩空间是从ICC配置文件生成的,则返回该配置文件,否则生成一个。
    注意:如果无效的色彩空间是从其中生成的,即使无效的色彩空间也可能返回ICC配置文件,以允许应用程序自己实现更广泛的支持。

  6. bool isValid() const 如果颜色空间有效,则返回true

  7. QColorSpace::Primaries primaries() const 返回预定义颜色空间或primaries::Custom
    void setPrimaries(QColorSpace::Primaries primariesId)
    void setPrimaries(const QPointF &whitePoint, const QPointF &redPoint, const QPointF &greenPoint, const QPointF &bluePoint) 将原色设置为whitePoint,redPoint,greenPoint和bluePoint的色度

  8. void swap(QColorSpace &other) 使用此颜色空间交换其他颜色空间

  9. QColorTransform transformationToColorSpace(const QColorSpace &colorspace) const
    生成并返回从该颜色空间到colorspace的转换

  10. QVariant operator QVariant() const 以QVariant的形式返回色彩空间

静态公共函数

  1. QColorSpace fromIccProfile(const QByteArray &iccProfile) 从ICC配置文件iccProfile创建QColorSpace

    注意:并非所有ICC配置文件均受支持。 QColorSpace仅支持基于三成分矩阵的RGB-XYZ ICC配置文件。

    如果不支持ICC配置文件,则返回无效的QColorSpace,您仍然可以使用iccProfile()读取原始ICC配置文件。

相关的函数

  1. bool operator!=(const QColorSpace &colorSpace1, const QColorSpace &colorSpace2)
  2. bool operator==(const QColorSpace &colorSpace1, const QColorSpace &colorSpace2)
  3. QDataStream & operator<<(QDataStream &stream, const QColorSpace &colorSpace)
    QDataStream & operator>>(QDataStream &stream, QColorSpace &colorSpace)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值