从图像中提取颜色的python模块。得到任何图片的调色板!

colorgram.p的Python项目详细描述


colorgram.py是一个python库,允许您从图像中提取颜色。与其他库相比,颜色图算法的结果更为强烈。

py是由github用户@darosh编写的javascript库colorgram.js的一个端口。目标是对原始库的结果有100%的准确性(这是一个已经达到的目标)。我决定移植它,因为我更喜欢Colorgram算法得到的结果,而不是其他库的结果-请看下一节。

结果

Results of colorgram.py on a 512x512 image

从时间上看,512x512图像的提取大约需要0.66s(另一个流行的颜色提取库Color Thief大约需要1.05s)。

安装

您可以使用pip安装colorgram.py,如下所示:

pip install colorgram.py

如何使用

使用colorgram.py很简单。主要只有一个函数需要使用-colorgram.extract

示例

importcolorgram# Extract 6 colors from an image.colors=colorgram.extract('sweet_pic.jpg',6)# colorgram.extract returns Color objects, which let you access# RGB, HSL, and what proportion of the image was that color.first_color=colors[0]rgb=first_color.rgb# e.g. (255, 151, 210)hsl=first_color.hsl# e.g. (230, 255, 203)proportion=first_color.proportion# e.g. 0.34# RGB and HSL are named tuples, so values can be accessed as properties.# These all work just as well:red=rgb[0]red=rgb.rsaturation=hsl[1]saturation=hsl.s

colorgram.extract(image, number_of_colors)

从图像中提取颜色。image可以是文件的路径、类似文件的对象或枕头Image对象。函数将返回number_of_colorsColor对象的列表。

colorgram.Color

从图像中提取的颜色。它的属性是:

  • Color.rgb-表示为0到255之间rgb的namedtuple的颜色,例如(r=255, g=151, b=210)
  • Color.hsl-表示为从0到255的hsl的namedtuple的颜色,例如(h=230, s=255, l=203)
  • Color.proportion-提取颜色中图像从0到1的比例,例如0.34

按hsl分类

原始库允许您对hsl得到的颜色进行排序。但实际上,颜色仅按色调排序(从colorgram.js 0.1.5开始),而忽略饱和度和亮度。要在colorgram.py中获得相应的结果,只需执行以下操作:

colors.sort(key=lambdac:c.hsl.h)# or...sorted(colors,key=lambdac:c.hsl.h)

联系人

如果您在colorgram.py中发现了一个bug,或者您希望添加一个功能,请在github上open an issue

如果你有关于图书馆的问题,或者你只是想谈谈,好吧,任何事情,那都没有问题。您可以通过以下任何方式联系我:

为了快速得到答案,twitter是你最好的选择。

享受吧!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在jbosseap6上部署CXF web服务时发生java错误。1.1   tablecell中的java Progressbar和标签   关于Java中此引用的问题   java如何使用下拉列表中选择的值过滤c:forEach给出的结果?   对包含其他对象的类使用BoundedMapperFacade的java Orika映射   java如何测试配置的“键”和“值”。属性文件?   java Ctrl+箭头键、多字变量名和eclipse pydev   无法通过运行索引执行基于java服务器表单的身份验证。jsp而非servlet   如何在java中使用正则表达式更改匹配子字符串的前缀和后缀   java如何安排selenium脚本在一周中的某一天的某个特定时间运行?   FileWatcher中的java溢出事件   java将堆栈大小设置为线程在安卓中似乎没有什么区别   xml为什么Java在我的XPath中添加反斜杠?   具有多个SQL语句的java MySQL ConnectorJ   为什么在eclipse中运行Java应用程序时JFrame不可见?   java正则表达式将2个字符替换为1个字符   UTC时区上的java hibernate+spring启动存储日期故障   Java未正确格式化日期   java双链接列表getData问题