PHP实现RGB,HSL,HSV色彩空间转换

Python编程:ISP中色彩空间转换 颜色空间转换是图像信号处理(ISP)流水线中的关键环节,负责在不同颜色表示系统之间进行转换,以满足不同处理阶段的需求。 阅读详情
<?php

/**
 * HSL色彩空间描述
 * @author shizhuolin
 */
class HSL {

    /**
     * 色相 0-360
     * @var float 
     */
    protected $_hue;

    /**
     * 饱和度 0-1
     * @var float 
     */
    protected $_saturation;

    /**
     * 亮度 0-1
     * @var float 
     */
    protected $_lightness;

    /**
     * 构造HSL色彩空间描述
     * @param float $hue
     * @param float $saturation
     * @param float $lightness 
     */
    public function __construct($hue=0, $saturation=0, $lightness=0) {
        $this->_hue = $hue;
        $this->_saturation = $saturation;
        $this->_lightness = $lightness;
    }

    /**
     * 获取色相
     * @return float 
     */
    public function getHue() {
        return $this->_hue;
    }

    /**
     * 获取饱和度
     * @return float 
     */
    public function getSaturation() {
        return $this->_saturation;
    }

    /**
     * 获取亮度
     * @return float 
     */
    public function getLightness() {
        return $this->_lightness;
    }

    /**
     * 获取RGB形式色彩空间描述
     * @return RGB 
     */
    public function toRGB() {
        $h = $this->getHue();
        $s = $this->getSaturation();
        $l = $this->getLightness();

        if ($s == 0) {
            require_once 'RGB.php';
            return new RGB($l, $l, $l);
        }

        $q = $l < 0.5 ? $l * (1 + $s) : $l + $s - ($l * $s);
        $p = 2 * $l - $q;
        $hk = $h / 360;
        $tR = $hk + (1 / 3);
        $tG = $hk;
        $tB = $hk - (1 / 3);

        $tR = $this->getTC($tR);
        $tG = $this->getTC($tG);
        $tB = $this->getTC($tB);
        $tR = $this->getColorC($tR, $p, $q);
        $tG = $this->getColorC($tG, $p, $q);
        $tB = $this->getColorC($tB, $p, $q);

        require_once 'RGB.php';
        return new RGB($tR, $tG, $tB);
    }

    private function getColorC($tc, $p, $q) {
        if ($tc < (1 / 6)) {
            return $p + (($q - $p) * 6 * $tc );
        } else if ((1 / 6) <= $tc && $tc < 0.5) {
            return $q;
        } else if (0.5 <= $tc && $tc < (2 / 3)) {
            return $p + (($q - $p) * 6 * (2 / 3 - $tc) );
        } else {
            return $p;
        }
    }

    private function getTC($c) {
        if ($c < 0)
            $c++;
        if ($c > 1)
            $c--;
        return $c;
    }

    /**
     * 获取 array形式HSL色彩描述
     * @return array 
     */
    public function toArray() {
        return array(
            'hue' => $this->getHue(),
            'saturation' => $this->getSaturation(),
            'lightness' => $this->getLightness()
        );
    }

}


<?php

/**
 * HSV色彩空间描述
 * @author shizhuolin
 */
class HSV {

    /**
     * 色相 0-260
     * @var float 
     */
    protected $_hue;

    /**
     * 饱和度 0-1
     * @var float 
     */
    protected $_saturati
【温室气体】GOSAT 数据产品 阅读详情

相关推荐

5G/NR 网络切片基本概念(协议版)

26.1 网络切片概念 网络切片是一个概念,可以根据每个客户的要求进行区别对待。通过切片的形式,将不同流量差异化处理,以及可以将资源进行隔离,然后移动网络运营商可以将客户视为属于不同租户类型的客户,每种客户具有不同的服务要求,这些要求根据每个租户根据SLA (Service Level Agreement,服务水平协议)可以使用哪种切片类型进行管理和订阅。 网络切片始终由RAN部分和CN部...

欢迎来到小七的博客,这里将带你深入探索5G通信的神秘世界。无论你是通信领域的专业人士还是对这一领域充满好奇心的技术爱好者,这里都有专业协议解读、通信知识普及以及有趣的Python编程内容等你发现。 1万+

PHP】将HSV(色调、饱和度、明度)颜色空间中的颜色值转换RGB(红、绿、蓝)颜色空间中的颜色值

用于将HSV(色调、饱和度、明度)颜色空间中的颜色值转换RGB(红、绿、蓝)颜色空间中的颜色值。返回一个包含三个整数值的数组,分别表示红色、绿色和蓝色分量。这些值的范围为0到255。表示色调在6个主色调(红、黄、绿、青、蓝、洋红)中的位置,的值(即色调在6个主色调中的位置),计算RGB颜色分量。这些值用于计算RGB颜色分量。表示色调在两个相邻主色调之间的位置。(饱和度,范围为0到1)和。(色调,范围为0到1),(明度,范围为0到1)。

q8688的博客 636

小度音箱PHP对接全功能开发包:授权认证+设备控制+RGB/HSL/HSV色彩转换

专为小度智能音箱设备端对接设计的PHP开发包,开箱即用。包含完整的Dueros指令处理链:dueros_handle.php统一调度请求,dueros_gate.php实现网关转发,dueros_server.php作为服务入口;OAuth2.0授权流程由dueros_token.php和dueros_authorize.php支撑,支持token刷新与授权码交换;设备发现响应通过DiscoveryResponse.php生成,ControlResponse.php封装标准控制指令返回结构。色彩模块覆盖实际

2a4s6d8f0g的博客 208

RGBHSLHSV转换

形式定义 HSLHSV 在数学上定义为在 RGB 空间中的颜色的 R, G 和 B 的坐标的变换。 [编辑]从 RGBHSLHSV转换 设 (r, g, b) 分别是一个颜色的红、绿和蓝坐标,它们的值是在 0 到 1 之间的实数。设 max 等价于 r, g 和 b 中的最大者。设min 等于这些值中的最小者。要找到在 HSL 空间中的 (h, s, l) 值

吃梨就葡萄 2429

颜色空间RGBHSV(HSL)的转换

一般的3D编程只需要使用RGB颜色空间就好了,但其实美术人员更多的是使用HSV(HSL),因为可以方便的调整饱和度和亮度。 有时候美术需要程序帮助调整饱和度来达到特定风格的渲染效果,这时候就需要转换颜色空间了。 出处:http://zh.wikipedia.org/wiki/HSL%E5%92%8CHSV%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4 HSL

jiangxinyu的专栏 14万+

RGB、HSB\HSVHSL三种颜色空间的原理理解与转换

『"Color" refers to the human brains subjective interpretation of combination of a narrow band of wavelength of light』---- WIKIBOOKS 简单说来,颜色是人脑对不同波段光长的主观理解。 ----------------------------------Primary

CY_TEC的博客 1万+

HSLHSV色彩空间rgb的互转

 http://zh.wikipedia.org/wiki/HSLHSV色彩空间

yacper的专栏 1355

Hex hsl 转换 php,关于 RGB,HEX,HSL 颜色相互转换

最近一段时间在折腾一个微信在线编辑器的项目,使用 UEditor 进行二次开发。关于 UEditor 的定制,用到的都太粗浅,官方文档上都能找得到。主题使用的样式表是 ueditor.css 而不是ueditor.min.css,定制主题要注意这一点。而对整个项目来讲,感觉难度最大的,应该是素材换色的功能。牵扯到网上找到了 张鑫旭 大神以前写的代码,改了bug 稍微改写了一下。// HEX 颜色正...

weixin_28984915的博客 502

php 色彩空间转换,PHP-phpRGB转成HSV色彩空间模式

function RGB_TO_HSV ($R, $G, $B) // RGB Values:Number 0-255{ // HSV Results:Number 0-1$HSL = array();$var_R = ($R / 255);$var_G = ($G / 255);$var_B = ($B / 255);$var_M...

weixin_35965587的博客 171

别再手动查色值了!用Python一键生成你的专属色彩对照表(附RGB/CMYK/HSV转换代码)

本文介绍如何利用Python构建智能色彩工具箱,实现RGB、CMYK、HSV等色彩模式的快速转换与批量处理。通过专业库如colour和Pillow,开发者能轻松处理16进制色值转换色彩空间计算等任务,提升设计开发协作效率。文章还涵盖色彩管理系统构建、性能优化及现代工作流集成等高级应用。

weixin_30319153的博客 223

CvtColor(转)

http://wiki.opencv.org.cn/index.php/Cv%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86#CvtColor   CvtColor 色彩空间转换 void cvCvtColor( const CvArr* src, CvArr* dst, int code ); src输入的 8-bit , 16-bit 或 32-bit 单

西门求雪的专栏 676

UnityShader:HSV(色相,饱和度,亮度)转换

http://blog.csdn.net/costfine/article/details/46930473 发现其实美术调整颜色的时候大部分都是调整的HSV,因为可以方便的分别调整色相(hue)、饱和度(saturation)和色调(value)。例如人们要将颜色调整的偏红一点,那么只需要修改色相, 如果使用RGB的话,就需要同时调整3个值,仅仅只是增加R值的话,理论上讲,...

weixin_30432579的博客 313

OpenCV学习:物体跟踪

HSV是一种将RGB色彩模型中的点在圆柱坐标系中的表示法。这种表示法试图做到比RGB基于笛卡尔坐标系的几何结构更加直观。HSV即色相、饱和度、明度(英语:Hue, Saturation, Value),又称HSB,其中B即英语:Brightness。[1]在HSV颜色空间中,比在RGB颜色空间中更容易表示一种特定颜色,所以我们利用这一点可以更容易地提取带有某个特定颜色的物体。通过如下几步可以进行简...

Mao_Jonah的博客 833

【C# / Algorithm】RGBHSVHSL颜色模型的互相转换

RGBHSVHSL颜色模型的含义本文就不赘述了,大家可以直接百度到。 在此提供一个封装好的可以对三种颜色模型进行互相转换的辅助类。 以上是使用该类写出的程序示例。 以下是颜色模型类的描述 #region RGB / HSV / HSL 颜色模型类 /// /// 类 名:ColorHSL /// 功 能:H 色相

ls9512 1万+

HSV(HSB)和HSL颜色空间

RGB原理 RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。 RGB是从颜色发光的原理来设定的,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和,越混合亮度越高,即加法混合。 红、绿、蓝三个颜色通道每种色各分为256阶亮度,当三色灰度数值相同时,产生不同灰度值的灰色调,即三色灰度都为0时,是最

studyeboy的专栏 1万+

php: RGB 转 HSB(HSV)

前言 最近因为涉及到一个算色规则,其中需要把RGB转HSB的要求,所以自己研究了下,故此记录下。 什么是RGBRGB表示红色(R)、绿色(G)、蓝色(B),又称为三原色光。它是通过对三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。 什么是HSB? 在HSB模式中,H(hues)表示色相、S(saturatio...

panjiapengfly的博客 1388

图像 HSVRGB 的相互转换

本篇博客主要探讨了图像HSVRGB两种色彩空间之间的相互转换方法。HSV色彩空间以色调、饱和度和明度三个维度来描述颜色,而RGB色彩空间则基于红、绿、蓝三种基本颜色的组合来呈现色彩。博客首先详细解释了HSVRGB色彩空间的基本原理和特点,然后重点介绍了两者之间的转换算法和具体步骤。通过实例代码和图解,展示了如何实现这两种色彩空间之间的转换,并分析了转换过程中可能遇到的问题和解决方案。此外,博客还探讨了HSVRGB色彩空间在图像处理中的应用场景,如色彩分析、颜色提取和颜色调整等。

人无远虑,必有近忧 3054

HSV(HSL)颜色空间及其应用

from:http://nkwavelet.blog.163.com/blog/static/22775603820147851726816/ 【摘要】 本文首先阐述HSVHSL颜色模式的基本特性,然后介绍RGBHSV / HSL颜色空间互相转换的算法,并给出算法核心代码和效果图,最后将HSV颜色空间应用到图像增强,得到几个增强之后的效果图。 【参考资料】  1. 颜色

凌风探梅的专栏 1万+

计算机颜色系统:RGBHSVHSL

RGBHSVHSL是对计算颜色的三种不同的表示方法。RGB:Red(红色)、Green(绿色)、Blue(蓝色);HSV:Hue(色相)、Saturation(饱和度)、Value(色调);HSL:Hue(色相)、Saturation(饱和度)、Lightness(亮度)。其中HSV也叫做HSB:Hue(色相)、Saturation(饱和度)、Brightness(明度)。HSVHSL是对R...

ltn_NLCFD的博客 3984

Simulink代码生成学习札记,simulink代码生成及编译,C,C++

simulink 代码自动生成 非常好学 容易上手 全程零代码

上一篇: zend2数据层代码示例
下一篇: 用PHP+GD扩展实现图像高斯模糊处理
卓林
博客等级 码龄19年 7粉丝 18原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值