颜色 是 Magick++ 中的基本颜色类。它是一个简单的容器类,用于存储按 ImageMagick 的 Quantum 大小缩放后的像素红色、绿色、蓝色和 alpha 值。通常,用户会实例化从 Color 派生的类,该类支持适合应用程序需求的颜色模型。Color 类可以直接从 SVG 风格的颜色字符串构造。
QuantumDepth 值的影响
QuantumDepth |
Quantum 类型定义 |
Quantum 大小 |
8 |
无符号字符 |
32 位 |
16 |
无符号短整型 |
64 位 |
32 |
无符号整型 |
128 位 |
Color 基类不打算直接使用。通常,用户会构造派生类或从该类继承。颜色参数必须缩放以适合 Quantum 大小。Color 类包含指向 Quantum 的指针,该指针可以由 Color 类分配,也可以引用图像中现有的像素。
构造该类的另一种方法是通过 SVG 兼容的颜色规范字符串(例如 Color("red") 或 Color ("#FF0000"))。由于该类可以从字符串构造,因此在接受对 Color 的引用的方法中,可以方便地传递字符串以代替显式 Color 对象。Color 也可以转换为 std::string,以便在用户界面中方便使用,以及将设置保存到文本文件。
Color 派生类
RGB 颜色的表示,红色、绿色和蓝色指定为比率 (0 到 1) | |
表示 灰度 sRGB 颜色 (红色、绿色和蓝色的等量) 指定为比率 (0 到 1) | |
表示黑/白颜色 (真/假) | |
表示 YUV 颜色空间 中的颜色 |
表示 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_ ); };
表示灰度颜色 (在线性颜色空间中)。灰度 只是 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_ ); };
表示黑/白像素 (在 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_ ); };
表示色调/饱和度/亮度 (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_ ); };
表示 YUV 颜色空间中的颜色 (用于对电视传输进行颜色编码)。
参数范围
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_ ); };