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

#!/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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值