def imageToColor(url: str, scale=200, mode='rgb'):
        """将 url 指向的图片提纯为一个颜色"""
        from PIL import Image
        import colorsys
        if url:
            response = urllib.request.urlopen(url)
            img_buffer = io.BytesIO(response.read())
            img = Image.open(img_buffer)
            img = img.convert('RGBA')
            img.thumbnail((scale, scale))
            statistics = {'r': 0, 'g': 0, 'b': 0, 'coef': 0}
            for cnt, (r, g, b, a) in img.getcolors(img.size[0] * img.size[1]):
                hsv = colorsys.rgb_to_hsv(r / 255, g / 255, b / 255)
                saturation = hsv[1] * 255
                coefficient = (saturation * cnt * a) + 0.01  # avoid 0
                statistics['r'] += coefficient * r
                statistics['g'] += coefficient * g
                statistics['b'] += coefficient * b
                statistics['coef'] += coefficient
                color = (
                    int(statistics['r'] / statistics['coef']),
                    int(statistics['g'] / statistics['coef']),
                    int(statistics['b'] / statistics['coef'])
                )
            if mode.lower() == 'rgb':
                return color
            elif mode.lower() == 'hex':
                return "#%0.2X%0.2X%0.2X" % color
            else:
                return color
        else:
            return False
def imageToColor ( url : str , scale = 200 , mode = 'rgb' ) : from PIL import Image import colorsys if url : response = urllib . request . urlopen ( url ) img_buffer = io . BytesIO ( response . read ( ) ) img = Image . open ( img_buffer ) img = img . convert ( 'RGBA' ) img . thumbnail ( ( scale , scale ) ) statistics = { 'r' : 0 , 'g' : 0 , 'b' : 0 , 'coef' : 0 } for cnt , ( r , g , b , a ) in img . getcolors ( img . size [ 0 ] * img . size [ 1 ] ) : hsv = colorsys . rgb_to_hsv ( r / 255 , g / 255 , b / 255 ) saturation = hsv [ 1 ] * 255 coefficient = ( saturation * cnt * a ) + 0.01 statistics [ 'r' ] += coefficient * r statistics [ 'g' ] += coefficient * g statistics [ 'b' ] += coefficient * b statistics [ 'coef' ] += coefficient color = ( int ( statistics [ 'r' ] / statistics [ 'coef' ] ) , int ( statistics [ 'g' ] / statistics [ 'coef' ] ) , int ( statistics [ 'b' ] / statistics [ 'coef' ] ) ) if mode . lower ( ) == 'rgb' : return color elif mode . lower ( ) == 'hex' : return "#%0.2X%0.2X%0.2X" % color else : return color else : return False
将 url 指向的图片提纯为一个颜色