Magick::Color

颜色 是 Magick++ 中的基本颜色类。它是一个简单的容器类,用于存储按 ImageMagick 的 Quantum 大小缩放后的像素红色、绿色、蓝色和 alpha 值。通常,用户会实例化从 Color 派生的类,该类支持适合应用程序需求的颜色模型。Color 类可以直接从 SVG 风格的颜色字符串构造。

Quantum

用于在 ImageMagick 中表示颜色样本的基本类型是 Quantum 类型。像素由 Quantum 值的结构表示。例如,RGB 像素包含红色、绿色和蓝色量子,而 RGBA 像素包含红色、绿色、蓝色和不透明度量子。Quantum 可以达到的最大值由 MaxRGB 定义表示的常量值指定,该常量值本身由 Quantum 中的位数决定。QuantumDepth 构建选项决定 Quantum 中的位数。

Quantum

Quantum 是 ImageMagick 中像素的内部表示。ImageMagick 可以编译为支持 32 位、64 位或 128 位的 Quantum 类型像素。这由 QuantumDepth 定义的值控制。默认值为 32 位像素 (QuantumDepth=8),这提供了最佳性能和最少的资源消耗。如果需要额外的颜色精度或范围,则可以将 ImageMagick 编译为 QuantumDepth=16 或 QuantumDepth=32。下表显示了 QuantumDepth、Quantum 类型和总体 Quantum 大小之间的关系。

QuantumDepth 值的影响

QuantumDepth

Quantum 类型定义

Quantum 大小

8

无符号字符

32 位

16

无符号短整型

64 位

32

无符号整型

128 位

Color 类

Color 基类不打算直接使用。通常,用户会构造派生类或从该类继承。颜色参数必须缩放以适合 Quantum 大小。Color 类包含指向 Quantum 的指针,该指针可以由 Color 类分配,也可以引用图像中现有的像素。

构造该类的另一种方法是通过 SVG 兼容的颜色规范字符串(例如 Color("red") 或 Color ("#FF0000"))。由于该类可以从字符串构造,因此在接受对 Color 的引用的方法中,可以方便地传递字符串以代替显式 Color 对象。Color 也可以转换为 std::string,以便在用户界面中方便使用,以及将设置保存到文本文件。

class Color { public: Color ( Quantum red_, Quantum green_, Quantum blue_ ); Color ( Quantum red_, Quantum green_, Quantum blue_, Quantum alpha_ ); Color ( const std::string &svgColor_ ); Color ( const char * svgColor_ ); Color ( void ); virtual ~Color ( void ); Color ( const Color & color_ ); // 红色 (范围 0 到 MaxRGB) void redQuantum ( Quantum red_ ); Quantum redQuantum ( void ) const; // 绿色 (范围 0 到 MaxRGB) void greenQuantum ( Quantum green_ ); Quantum greenQuantum ( void ) const; // 蓝色 (范围 0 到 MaxRGB) void blueQuantum ( Quantum blue_ ); Quantum blueQuantum ( void ) const; // Alpha 水平 (范围 OpaqueOpacity=0 到 TransparentOpacity=MaxRGB) void alphaQuantum ( Quantum alpha_ ); Quantum alphaQuantum ( void ) const; // 子类使用的 alpha 的缩放版本 (范围不透明=0 到透明=1.0) void alpha ( double alpha_ ); double alpha ( void ) const; // 对象是否包含有效的颜色? void isValid ( bool valid_ ); bool isValid ( void ) const; // 通过 SVG 颜色规范字符串设置颜色 const Color& operator= ( const std::string & svgColor_ ); const Color& operator= ( const char * svgColor_ ); // 赋值运算符 Color& operator= ( const Color& color_ ); // 返回 SVG 颜色规范字符串 /* virtual */ operator std::string() const; // 返回 ImageMagick Quantum 运算符 Quantum() const; // 通过 ImageMagick Quantum 构造颜色 Color ( const Quantum &color_ ); // 通过 ImageMagick Quantum 设置颜色 const Color& operator= ( Quantum &color_ ); };

Color 派生类

ColorRGB

RGB 颜色的表示,红色、绿色和蓝色指定为比率 (0 到 1)

ColorGray

表示 灰度 sRGB 颜色 (红色、绿色和蓝色的等量) 指定为比率 (0 到 1)

ColorMono

表示黑/白颜色 (真/假)

ColorYUV

表示 YUV 颜色空间 中的颜色

ColorRGB

表示 sRGB 颜色。所有颜色参数的有效范围为 0.0-1.0。

class ColorRGB : public Color 
{ 
  public: 
    ColorRGB ( double red_, double green_, double blue_ ); 
    ColorRGB ( void ); 
    ColorRGB ( const Color & color_ ); 
    /* virtual */  ~ColorRGB ( void ); 
  
    void           red ( double red_ ); 
    double         red ( void ) const; 
  
    void           green ( double green_ ); 
    double         green ( void ) const; 
  
    void           blue ( double blue_ ); 
    double         blue ( void ) const;

    // Assignment operator from base class 
    ColorRGB& operator= ( const Color& color_ ); 
}; 

ColorGray

表示灰度颜色 (在线性颜色空间中)。灰度 只是 RGB,红色、绿色和蓝色的比例相等。所有双精度参数的有效范围为 0.0-1.0。

class ColorGray : public Color 
{ 
  public: 
    ColorGray ( double shade_ ); 
    ColorGray ( void ); 
    ColorGray ( const Color & color_ ); 
    /* virtual */ ~ColorGray ();

    void           shade ( double shade_ ); 
    double         shade ( void ) const;

    // Assignment operator from base class 
    ColorGray& operator= ( const Color& color_ ); 
}; 

ColorMono

表示黑/白像素 (在 RGB 颜色空间中)。颜色参数限制为“false” (黑色像素) 和“true” (白色像素)。

class ColorMono : public Color 
{ 
  public: 
    ColorMono ( bool mono_ ); 
    ColorMono ( void ); 
    ColorMono ( const Color & color_ ); 
    /* virtual */ ~ColorMono (); 
  
    void           mono ( bool mono_ ); 
    bool           mono ( void ) const;

    // Assignment operator from base class 
    ColorMono& operator= ( const Color& color_ ); 
}; 

ColorHSL

表示色调/饱和度/亮度 (HSL) 颜色空间中的颜色。

class ColorHSL : public Color 
{ 
  public: 
    ColorHSL ( double hue_, double saturation_, double luminosity_ ); 
    ColorHSL ( void ); 
    ColorHSL ( const Color & color_ ); 
    /* virtual */  ~ColorHSL ( ); 
  
    void           hue ( double hue_ ); 
    double         hue ( void ) const; 
  
    void           saturation ( double saturation_ ); 
    double         saturation ( void ) const; 
  
    void           luminosity ( double luminosity_ ); 
    double         luminosity ( void ) const;

    // Assignment operator from base class 
    ColorHSL& operator= ( const Color& color_ ); 
}; 

ColorYUV

表示 YUV 颜色空间中的颜色 (用于对电视传输进行颜色编码)。

参数范围

Y: 0.0 到 1.0
U: -0.5 到 0.5
V: -0.5 到 0.5
class ColorYUV : public Color 
{ 
  public: 
    ColorYUV ( double y_, double u_, double v_ ); 
    ColorYUV ( void ); 
    ColorYUV ( const Color & color_ ); 
    /* virtual */ ~ColorYUV ( void ); 
  
    void           u ( double u_ ); 
    double         u ( void ) const; 
  
    void           v ( double v_ ); 
    double         v ( void ) const; 
  
    void           y ( double y_ ); 
    double         y ( void ) const;

    // Assignment operator from base class 
    ColorYUV& operator= ( const Color& color_ ); 
};