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中apply函数的用法实例教程
Jul 31 Python
浅要分析Python程序与C程序的结合使用
Apr 07 Python
pygame学习笔记(3):运动速率、时间、事件、文字
Apr 15 Python
使用Python生成url短链接的方法
May 04 Python
详解Python中的type()方法的使用
May 21 Python
python topN 取最大的N个数或最小的N个数方法
Jun 04 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
Pytorch 之修改Tensor部分值方式
Dec 27 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
Feb 12 Python
django ListView的使用 ListView中获取url中的参数值方式
Mar 27 Python
Scrapy 配置动态代理IP的实现
Sep 28 Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 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 面向对象详解
2012/09/13 PHP
PHP使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
PHP简单实现记录网站访问量功能示例
2018/06/06 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
Jquery+JSon 无刷新分页实现代码
2010/04/01 Javascript
prettify 代码高亮着色器google出品
2010/12/28 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
2015/04/01 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
详解AngularJS中的作用域
2015/06/17 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
jquery 验证用户名是否重复代码实例
2019/05/14 jQuery
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
Python编程之gui程序实现简单文件浏览器代码
2017/12/08 Python
Python数字图像处理之霍夫线变换实现详解
2018/01/12 Python
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
python邮件发送smtplib使用详解
2020/06/16 Python
用python 实现在不确定行数情况下多行输入方法
2019/01/28 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
Roxy荷兰官方网站:冲浪、滑雪板、服装和配件
2019/10/22 全球购物
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
30年同学聚会邀请函
2014/01/25 职场文书
会计求职信怎么写
2015/03/20 职场文书
保研专家推荐信范文
2015/03/25 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
2015年环卫工作总结
2015/04/28 职场文书
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP
CSS3实现360度循环旋转功能
2022/02/12 HTML / CSS
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python