|
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,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,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,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,but still give them a low # weight. score = (saturation + 0.1) * count if score > max_score: max_score = score dominant_color.append((r,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()
(编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|