返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php如何实现色彩空间转换
  • 729
分享到

php如何实现色彩空间转换

2023-06-20 16:06:43 729人浏览 泡泡鱼
摘要

本篇内容主要讲解“PHP如何实现色彩空间转换”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何实现色彩空间转换”吧!php实现色彩空间转换的方法:首先创建一个PHP示例文件;然后创建“HS

本篇内容主要讲解“PHP如何实现色彩空间转换”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习php如何实现色彩空间转换”吧!

php实现色彩空间转换的方法:首先创建一个PHP示例文件;然后创建“HSL、HSV、RGB色彩空间”;最后通过“protected function tearDown(){...}”等方法实现转换。

本文操作环境:windows7系统、PHP7.1版,DELL G3电脑

php怎么实现色彩空间转换?

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

<?php class HSL {         protected $_hue;         protected $_saturation;         protected $_lightness;         public function __construct($hue=0, $saturation=0, $lightness=0) {        $this->_hue = $hue;        $this->_saturation = $saturation;        $this->_lightness = $lightness;    }         public function getHue() {        return $this->_hue;    }         public function getSaturation() {        return $this->_saturation;    }         public function getLightness() {        return $this->_lightness;    }         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;    }         public function toArray() {        return array(            'hue' => $this->getHue(),            'saturation' => $this->getSaturation(),            'lightness' => $this->getLightness()        );    } }
<?php class HSV {         protected $_hue;         protected $_saturation;         protected $_value;         public function __construct($hue=0, $saturation=0, $value=0) {        $this->_hue = $hue;        $this->_saturation = $saturation;        $this->_value = $value;    }         public function getHue() {        return $this->_hue;    }         public function getSaturation() {        return $this->_saturation;    }         public function getValue() {        return $this->_value;    }         public function toRGB() {        $hue = $this->getHue();        $saturation = $this->getSaturation();        $value = $this->getValue();        $hi = floor($hue / 60) % 6;        $f = $hue / 60 - $hi;        $p = $value * (1 - $saturation);        $q = $value * (1 - $f * $saturation);        $t = $value * (1 - (1 - $f) * $saturation);        switch ($hi) {            case 0:                $red = $value;                $green = $t;                $blue = $p;                break;            case 1:                $red = $q;                $green = $value;                $blue = $p;                break;            case 2:                $red = $p;                $green = $value;                $blue = $t;                break;            case 3:                $red = $p;                $green = $q;                $blue = $value;                break;            case 4:                $red = $t;                $green = $p;                $blue = $value;                break;            case 5:                $red = $value;                $green = $p;                $blue = $q;                break;            default:                throw new ErrorException('HSV Conversion RGB failure!');                break;        };        require_once 'RGB.php';        return new RGB($red, $green, $blue);    }         public function toArray() {        return array(            'hue' => $this->getHue(),            'saturation' => $this->getSaturation(),            'value' => $this->getValue()        );    } }
<?php class RGB {         protected $_red;         protected $_green;         protected $_blue;         public function __construct($red = 0, $green = 0, $blue = 0) {        $this->_red = $red;        $this->_green = $green;        $this->_blue = $blue;    }         public function getRed() {        return $this->_red;    }         public function getGreen() {        return $this->_green;    }         public function getBlue() {        return $this->_blue;    }         public function toHSL() {        $r = $this->getRed();        $g = $this->getGreen();        $b = $this->getBlue();        $rgb = array($r, $g, $b);        $max = max($rgb);        $min = min($rgb);        $diff = $max - $min;        if ($max == $min) {            $h = 0;        } else if ($max == $r && $g >= $b) {            $h = 60 * (($g - $b) / $diff);        } else if ($max == $r && $g < $b) {            $h = 60 * (($g - $b) / $diff) + 360;        } else if ($max == $g) {            $h = 60 * (($b - $r) / $diff) + 120;        } else if ($max == $b) {            $h = 60 * (($r - $g) / $diff) + 240;        } else {            throw new ErrorException("RGB conversion HSL failure!");        }        $l = ($max + $min) / 2;        if ($l == 0 || $max == $min) {            $s = 0;        } else if (0 < $l && $l <= 0.5) {            $s = $diff / (2 * $l);        } else if ($l > 0.5) {            $s = $diff / (2 - 2 * $l);        } else {            throw new ErrorException("RGB conversion HSL failure!");        }        require_once 'HSL.php';        return new HSL($h, $s, $l);    }         public function toHSV() {        $red = $this->getRed();        $green = $this->getGreen();        $blue = $this->getBlue();         $rgb = array($red, $green, $blue);        $max = max($rgb);        $min = min($rgb);        $diff = $max - $min;                 if ($max == $min) {            $hue = 0;        } else if ($max == $red && $green >= $blue) {            $hue = 60 * (($green - $blue) / $diff);        } else if ($max == $red && $green < $blue) {            $hue = 60 * (($green - $blue) / $diff) + 360;        } else if ($max == $green) {            $hue = 60 * (($blue - $red) / $diff) + 120;        } else if ($max == $blue) {            $hue = 60 * (($red - $green) / $diff) + 240;        } else {            throw new ErrorException("compute hue failure!");        }                 if ($max == 0) {            $saturation = 0;        } else {            $saturation = 1 - $min / $max;        }                 $value = $max;         require_once 'HSV.php';        return new HSV($hue, $saturation, $value);    }         public function toArray() {        return array(            'red' => $this->getRed(),            'green' => $this->getGreen(),            'blue' => $this->getBlue()        );    } }

效果测试(需要phpunit支持)

<?php require_once dirname(__FILE__) . '/../../color/RGB.php';require_once dirname(__FILE__) . '/../../color/HSL.php';require_once dirname(__FILE__) . '/../../color/HSV.php'; class HSLTest extends PHPUnit_Framework_TestCase {         protected $object;         protected function setUp() {        $this->object = new HSL(120, 1, 0.75);    }         protected function tearDown() {            }         public function testGetHue() {        $this->assertEquals(120, $this->object->getHue());    }         public function testGetSaturation() {        $this->assertEquals(1, $this->object->getSaturation());    }         public function testGetLightness() {        $this->assertEquals(0.75, $this->object->getLightness());    }         public function testToRGB() {        $this->assertEquals(new RGB(0.5, 1, 0.5), $this->object->toRGB());    }         public function testToArray() {        $this->assertEquals(array(            'hue' => 120,            'saturation' => 1,            'lightness' => 0.75                ), $this->object->toArray());    } }
<?php require_once dirname(__FILE__) . '/../../color/RGB.php';require_once dirname(__FILE__) . '/../../color/HSL.php';require_once dirname(__FILE__) . '/../../color/HSV.php'; class HSVTest extends PHPUnit_Framework_TestCase {         protected $object;         protected function setUp() {        $this->object = new HSV(120, 0.5, 1);    }         protected function tearDown() {            }         public function testGetHue() {        $this->assertEquals(120, $this->object->getHue());    }         public function testGetSaturation() {        $this->assertEquals(0.5, $this->object->getSaturation());    }         public function testGetValue() {        $this->assertEquals(1, $this->object->getValue());    }         public function testToRGB() {        $this->assertEquals(new RGB(0.5, 1, 0.5), $this->object->toRGB());    }         public function testToArray() {        $this->assertEquals(array(            'hue' => 120,            'saturation' => 0.5,            'value' => 1                ), $this->object->toArray());    } }
<?php require_once dirname(__FILE__) . '/../../color/RGB.php';require_once dirname(__FILE__) . '/../../color/HSL.php';require_once dirname(__FILE__) . '/../../color/HSV.php'; class RGBTest extends PHPUnit_Framework_TestCase {         protected $object;         protected function setUp() {        $this->object = new RGB(0.5, 1, 0.5);    }         protected function tearDown() {            }         public function testGetRed() {        $this->assertEquals(0.5, $this->object->getRed());    }         public function testGetGreen() {        $this->assertEquals(1, $this->object->getGreen());    }         public function testGetBlue() {        $this->assertEquals(0.5, $this->object->getBlue());    }         public function testToHSL() {        $this->assertEquals(new HSL(120, 1, 0.75), $this->object->toHSL());    }         public function testToHSV() {        $this->assertEquals(new HSV(120, 0.5, 1), $this->object->toHSV());    }         public function testToArray() {        $this->assertEquals(array(            'red' => 0.5,            'green' => 1,            'blue' => 0.5                ), $this->object->toArray());    } }

到此,相信大家对“php如何实现色彩空间转换”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: php如何实现色彩空间转换

本文链接: https://lsjlt.com/news/298580.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • php如何实现色彩空间转换
    本篇内容主要讲解“php如何实现色彩空间转换”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何实现色彩空间转换”吧!php实现色彩空间转换的方法:首先创建一个PHP示例文件;然后创建“HS...
    99+
    2023-06-20
  • python如何实现RGB与YCBCR颜色空间转换
    小编给大家分享一下python如何实现RGB与YCBCR颜色空间转换,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、灰度值和亮度的关系人类能够从灰度图像中获取理...
    99+
    2023-06-29
  • OpenCV库怎么进行图像的色彩空间转换
    在OpenCV库中,可以使用cv2.cvtColor()函数来进行图像的色彩空间转换。该函数接受两个参数,分别是要转换的图像和目标色...
    99+
    2024-05-23
    OpenCV
  • Python的图像色彩空间转换技术是什么
    Python中的图像色彩空间转换技术是使用OpenCV库中的cv2.cvtColor()函数来实现的。该函数可以将图像从一种色彩空间...
    99+
    2024-04-29
    Python
  • python实现颜色空间转换程序(Tkinter)
    本文主要基于colorsys实现,样例是从hls转换到rgb,如果要换颜色空间很容易只需要修改一个函数,具体内容如下 用到了Scale和Canvas组件。 运行效果图: 代码如下: from Tki...
    99+
    2022-06-04
    转换程序 颜色 空间
  • python实现RGB与YCBCR颜色空间转换
    目录前言:1、灰度值和亮度的关系2、RGB颜色空间与颜色控制3、YCbCr颜色空间及与RGB的变换关系前言: 人类如何感知或者理解颜色是个非常复杂的问题,本文不讨论如何从生物学或者心...
    99+
    2024-04-02
  • Python实现图片色彩转换案例
    目录前言环境依赖代码执行结果前言 本文提供将图片色彩转为黑白或者褐色风格。比较类似于我们在看动漫、影视作品中,当人物在回忆过程中,体现出来的画面一般都是黑白或者褐色的。 环境依赖 f...
    99+
    2024-04-02
  • OpenCV 的颜色空间转换
    1 # coding: utf-8 2 3 ''' 4 第13章主要介绍:颜色空间转换 5 ''' 6 7 import cv2 8 import numpy as np 9 10 ''' 11 经常用到的...
    99+
    2023-01-30
    颜色 空间 OpenCV
  • Pillow怎么实现图像的颜色空间转换
    Pillow是一个Python图像处理库,可以使用它来实现图像的颜色空间转换。下面是一个示例代码,演示如何使用Pillow将一张图像...
    99+
    2024-05-22
    Pillow
  • PHP将真彩色图像转换为调色板图像
    这篇文章将为大家详细讲解有关PHP将真彩色图像转换为调色板图像,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP 将真彩色图像转换为调色板图像 在计算机图形中,真彩色图像存储每个像素的完整颜色信息,使用...
    99+
    2024-04-02
  • Python OpenCV 彩色与灰度图像的转换实现
    彩色图像转换为灰度图像 第一种方式通过 imread 读取图像的时候直接设置参数为 0 ,自动转换彩色图像为灰度图像 第二种方式,可以通过 split 进行通道分离,或者叫做读取单个...
    99+
    2024-04-02
  • python如何实现彩色圆环
    本篇内容介绍了“python如何实现彩色圆环”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!彩色圆环更漂亮A.课程内容通过绘制彩色的圆环来学习...
    99+
    2023-07-02
  • 如何使用python opencv实现灰度图和彩色图的互相转换
    这篇文章将为大家详细讲解有关如何使用python opencv实现灰度图和彩色图的互相转换,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。opencv灰度图和彩色图互相转换如果摄像头本来就得到3维...
    99+
    2023-06-28
  • python opencv实现灰度图和彩色图的互相转换
    目录opencv灰度图和彩色图互相转换注意:附:python将灰度图转换为RGB彩色图总结opencv灰度图和彩色图互相转换 如果摄像头本来就得到3维度红外图那就不用处理直接可以用:...
    99+
    2024-04-02
  • opencv中颜色空间转换函数cv2.cvtColor()如何使用
    这篇“opencv中颜色空间转换函数cv2.cvtColor()如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“ope...
    99+
    2023-06-30
  • Android图片色彩变换实现方法
    最近在做图片相关的应用,所以就各方积累到一些常用的操作,一般来说会有多种方式来实现这一功能,比如  1.采用色度变换  2.采用ColorMatrix颜色矩...
    99+
    2022-06-06
    方法 Android
  • JSP如何实现彩色验证码
    这篇文章给大家分享的是有关JSP如何实现彩色验证码的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。生成有4个随机数字和杂乱背景的图片,数字和背景颜色会改变,服务器端刷新(用history.go(-1)也会变) 产生...
    99+
    2023-06-03
  • php时间格式转换成时间戳如何实现
    这篇文章主要介绍“php时间格式转换成时间戳如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php时间格式转换成时间戳如何实现”文章能帮助大家解决问题。一、什么是时间格式和时间戳在PHP中,时...
    99+
    2023-07-05
  • php如何实现30天转换为时间戳
    这篇“php如何实现30天转换为时间戳”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php如何实现30天转换为时间戳”文章吧...
    99+
    2023-07-04
  • php如何实现日期和时间戳的转换
    这篇文章主要介绍“php如何实现日期和时间戳的转换”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php如何实现日期和时间戳的转换”文章能帮助大家解决问题。将日期转换成时间戳在PHP中,我们可以通过内...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作