python手记(四):pillow(三) ImageColor模块

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41500251/article/details/83095146

人生不易且无趣,一起找点乐子吧。欢迎评论,很文章无关也可以。

 

 

 

上次说到ImageChops模块,这次说下IamgeColor。(先把上篇欠的图补上)上篇的末尾提到《星月夜》的补图,乌云的补图。又鉴于这次的文章没啥视觉冲击。把这两张图放出来看看。

补色:

乌云原图:

处理:

发完了,接下来进入主题吧。来谈谈我们的ImageColor module。这个模块很简单,我们只说两个方法。然后,我们详谈下,颜色的命名。

一、getrgb()方法:

方法的功能望文生义(又是这个词,我要吐了,你是真的没什么文采。没文化,还不是莽夫,都不知道自己系拉个~)即可,就是得到颜色的rgb值。参数当然就是个颜色的字符串名字,后面我们会详谈字符串的命名方式。

简单看下方法的功能,这里的颜色我们用最简单的命名方式,也是我们最常用的:‘red’。给这种起名的方法起个名字吧,叫“直接拼”,好接地气地说。(我喜欢~~~)

from PIL import ImageColor

def color():
    color = 'red'
    print(ImageColor.getrgb(color))

if __name__ == '__main__':
    color()

代码很简单,也很好理解,直接看下结果吧。

显示出了红色的rgb值。

 

二、getcolor()方法:

第二个方法,其实和getrgb()方法差不多,也是的得到颜色值,但是多了一个参数,可以指定mode。也就是说可以得到某种Image mode的颜色值。

from PIL import ImageColor

def color():
    color = 'red'
    print(ImageColor.getrgb(color))
    print(ImageColor.getcolor(color, 'RGB'))
    print(ImageColor.getcolor(color, 'RGBA'))#ValueError

if __name__ == '__main__':
    color()

用两个例子,依旧是得到‘red’的颜色值,mode分别是‘RGB’和‘RGBA’。看下结果:

如果颜色的命名识别不出,或者mode无法解析,会弹出ValueError的异常。

总结下,这两种方法的功能,就是:

convert a color string to an RGB tuple.(原话)(不翻译,一来不会,二来不准,机智如我【手动邪恶脸】)

 

 

这是ImageColor module的两个主要方法。接下来我们详细说下,颜色的命名方式。

我们在用一些颜色的时候,除了直接拼写单词外,最经常用的就是十六进制的表示方式。比如#f00代表红色,#00f代表蓝色灯。这两种方式我们在各种语言中会经常使用,而且在写网页时,也经常用这两种方式来设置颜色属性。比如:

<div style="color=#fff">之类的。(这里不知道写的对不对哈,有点忘了。)(别动手!!!)

 

我们来看下,其他的表示颜色的命名。

RGB方法,命名形式是这样的:rgb(red,green,blue)。三颜色参数,分别表示色道值,在0-255之间。也可用0-100%来进行赋值。这和我们html里面设置长宽有些类似,我们除了width:500px之外,还可以用width:50%来表示。

HSL方法,Hue-Saturation-Lightness。色调,饱和度,明度。表示形式:hsl(h, s, l)。Hue(色调)的取值在0-360之间,0代表red,120代表green,240代表blue。Saturation(饱和度)取值0-100%,0代表灰(gray),100代表全颜色(full color)。Lightness(明度)取值也在0-100%,0代表black,50位normal(正常),100位white。

HSV方法,和HSL同,除了V(value),取值0-100%,0为black,100位normal。还有一种,HSB,B(brightness)亮度,参数要求和HSV相同。

还有一点需要说明,颜色命名大小写不敏感,什么意思,就是‘rgb’和‘RGB’没差。

我们用刚刚的getrgb()方法整体来搞下,说明情况:

from PIL import ImageColor

def fuc():
    print(ImageColor.getrgb('rgb(255, 0, 0)'))
    print(ImageColor.getrgb('rgb(100%, 0%, 0%)'))
    print(ImageColor.getrgb('hsl(0, 100%, 50%)'))#hue 0-360 0r 120g 240b saturation 0-100% 0灰色 100全彩 lightness 0黑 50正常 100白 高速逻辑函数什么鬼  色调 饱和度 亮点
    print(ImageColor.getrgb('hsv(0, 100%, 100%)'))#hue saturation value 0-100% 0黑 100正常
    print(ImageColor.getrgb('hsb(0, 100%, 100%)'))#brightness
    print(ImageColor.getrgb('red'))
    print(ImageColor.getrgb('RED'))

if __name__ == '__main__':
    fuc()

也就是说,以上的命名方法,全都表示红色。你get到了吗?

 

ok,这就是ImageColor module的主要内容,不写了,去睡觉。晚安。

 

 

 

后记:

括号内的内容为第二次审看添加内容,旨在引起您阅读时极大的舒适。

猜你喜欢

转载自blog.csdn.net/qq_41500251/article/details/83095146
今日推荐