python判断、获取一张图片主色调的2个实例


Posted in Python onApril 10, 2014

python判断图片主色调,单个颜色:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import colorsys
from PIL import Image
import optparse
def get_dominant_color(image):
"""
Find a PIL image's dominant color, returning an (r, g, b) tuple.
"""
image = image.convert('RGBA')
# Shrink the image, so we don't spend too long analysing color
# frequencies. We're not interpolating so should be quick.
image.thumbnail((200, 200))
max_score = None
dominant_color = None
for count, (r, g, b, a) in image.getcolors(image.size[0] * image.size[1]):
# Skip 100% transparent pixels
if a == 0:
continue
# Get color saturation, 0-1
saturation = colorsys.rgb_to_hsv(r / 255.0, g / 255.0, b / 255.0)[1]
# Calculate luminance - integer YUV conversion from
# http://en.wikipedia.org/wiki/YUV
y = min(abs(r * 2104 + g * 4130 + b * 802 + 4096 + 131072) >> 13, 235)
# Rescale luminance from 16-235 to 0-1
y = (y - 16.0) / (235 - 16)
# Ignore the brightest colors
if y > 0.9:
continue
# Calculate the score, preferring highly saturated colors.
# Add 0.1 to the saturation so we don't completely ignore grayscale
# colors by multiplying the count by zero, but still give them a low
# weight.
score = (saturation + 0.1) * count
if score > max_score:
max_score = score
dominant_color = (r, g, b)
return dominant_color
def main():
img = Image.open("meitu.jpg")
print '#%02x%02x%02x' % get_dominant_color(img)
if __name__ == '__main__':
main()

python判断一张图片的主色调,多个颜色:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import colorsys
from PIL import Image
import optparse
def get_dominant_color(image):
"""
Find a PIL image's dominant color, returning an (r, g, b) tuple.
"""
image = image.convert('RGBA')
# Shrink the image, so we don't spend too long analysing color
# frequencies. We're not interpolating so should be quick.
## image.thumbnail((200, 200))
max_score = 1
dominant_color = []
for count, (r, g, b, a) in image.getcolors(image.size[0] * image.size[1]):
# Skip 100% transparent pixels
if a == 0:
continue
# Get color saturation, 0-1
saturation = colorsys.rgb_to_hsv(r / 255.0, g / 255.0, b / 255.0)[1]
# Calculate luminance - integer YUV conversion from
# http://en.wikipedia.org/wiki/YUV
y = min(abs(r * 2104 + g * 4130 + b * 802 + 4096 + 131072) >> 13, 235)
# Rescale luminance from 16-235 to 0-1
y = (y - 16.0) / (235 - 16)
# Ignore the brightest colors
if y > 0.9:
continue
# Calculate the score, preferring highly saturated colors.
# Add 0.1 to the saturation so we don't completely ignore grayscale
# colors by multiplying the count by zero, but still give them a low
# weight.
score = (saturation + 0.1) * count
if score > max_score:
max_score = score
dominant_color.append((r, g, b))
return dominant_color
def main():
img = Image.open("meitu.jpg")
colors = get_dominant_color(img)
for item in colors:
print '#%02x%02x%02x' % item
if __name__ == '__main__':
main()

 

Python 相关文章推荐
Python实现比较两个文件夹中代码变化的方法
Jul 10 Python
Python模拟脉冲星伪信号频率实例代码
Jan 03 Python
python跳过第一行快速读取文件内容的实例
Jul 12 Python
python环形单链表的约瑟夫问题详解
Sep 27 Python
python3.6利用pyinstall打包py为exe的操作实例
Oct 31 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
Python3.0 实现决策树算法的流程
Aug 08 Python
django+tornado实现实时查看远程日志的方法
Aug 12 Python
Django2.1.7 查询数据返回json格式的实现
Dec 29 Python
python实现文件+参数发送request的实例代码
Jan 05 Python
Python实现文字pdf转换图片pdf效果
Apr 03 Python
Python读取和写入Excel数据
Apr 20 Python
Python使用新浪微博API发送微博的例子
Apr 10 #Python
一个检测OpenSSL心脏出血漏洞的Python脚本分享
Apr 10 #Python
Python删除指定目录下过期文件的2个脚本分享
Apr 10 #Python
python实现随机密码字典生成器示例
Apr 09 #Python
Python下的Mysql模块MySQLdb安装详解
Apr 09 #Python
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
Apr 08 #Python
python计算圆周长、面积、球体体积并画出圆
Apr 08 #Python
You might like
PHP 之Section与Cookie使用总结
2012/09/14 PHP
PHP资源管理框架Assetic简介
2014/06/12 PHP
php中http与https跨域共享session的解决方法
2014/12/20 PHP
php实现文件上传及头像预览功能
2017/01/15 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
2018/04/27 PHP
php从数据库读取数据,并以json格式返回数据的方法
2018/08/21 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2020/01/22 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
JQuery实现自定义对话框的代码
2008/06/15 Javascript
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
vue结合Echarts实现点击高亮效果的示例
2018/03/17 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
2019/04/15 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
2020/01/26 Javascript
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
2020/08/20 NodeJs
如何手写简易的 Vue Router
2020/10/10 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
使用python装饰器验证配置文件示例
2014/02/24 Python
python统计日志ip访问数的方法
2015/07/06 Python
python实现kMeans算法
2017/12/21 Python
Django中FilePathField字段的用法
2020/05/21 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
python自动生成证件号的方法示例
2021/01/14 Python
用css3制作纸张效果(外翻卷角)
2013/02/01 HTML / CSS
美国迪克体育用品商店:DICK’S Sporting Goods
2018/07/24 全球购物
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
继承公证书样本
2014/04/04 职场文书
竞选演讲稿范文大全
2014/05/12 职场文书
小组名称和口号
2014/06/09 职场文书
作风年建设汇报材料
2014/08/14 职场文书
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL
Linux在两个服务器直接传文件的操作方法
2022/08/05 Servers