如何在python中将RGB转换为CMYK,反之亦然? [英] How can I convert RGB to CMYK and vice versa in python?

查看:50
本文介绍了如何在python中将RGB转换为CMYK,反之亦然?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我有一个 RGB 小数,例如 255, 165, 0,我该怎么做才能将其转换为 CMYK?

例如:

<预><代码>>>>红、绿、蓝 = 255, 165, 0>>>rgb_to_cmyk(红、绿、蓝)(0, 35, 100, 0)

解决方案

这是 的 Python 端口Javascript 实现.

RGB_SCALE = 255CMYK_SCALE = 100def rgb_to_cmyk(r, g, b):如果 (r, g, b) == (0, 0, 0):# 黑色的返回 0, 0, 0, CMYK_SCALE# RGB [0,255] ->cmy [0,1]c = 1 - r/RGB_SCALEm = 1 - g/RGB_SCALEy = 1 - b/RGB_SCALE# 提取出 k [0, 1]min_cmy = min(c, m, y)c = (c - min_cmy)/(1 - min_cmy)m = (m - min_cmy)/(1 - min_cmy)y = (y - min_cmy)/(1 - min_cmy)k = min_cmy# 重新缩放到范围 [0,CMYK_SCALE]返回 c * CMYK_SCALE, m * CMYK_SCALE, y * CMYK_SCALE, k * CMYK_SCALE

If I had a RGB decimal such as 255, 165, 0, what could I do to convert this to CMYK?

For example:

>>> red, green, blue = 255, 165, 0
>>> rgb_to_cmyk(red, green, blue)
(0, 35, 100, 0)

解决方案

Here's a Python port of a Javascript implementation.

RGB_SCALE = 255
CMYK_SCALE = 100


def rgb_to_cmyk(r, g, b):
    if (r, g, b) == (0, 0, 0):
        # black
        return 0, 0, 0, CMYK_SCALE

    # rgb [0,255] -> cmy [0,1]
    c = 1 - r / RGB_SCALE
    m = 1 - g / RGB_SCALE
    y = 1 - b / RGB_SCALE

    # extract out k [0, 1]
    min_cmy = min(c, m, y)
    c = (c - min_cmy) / (1 - min_cmy)
    m = (m - min_cmy) / (1 - min_cmy)
    y = (y - min_cmy) / (1 - min_cmy)
    k = min_cmy

    # rescale to the range [0,CMYK_SCALE]
    return c * CMYK_SCALE, m * CMYK_SCALE, y * CMYK_SCALE, k * CMYK_SCALE

这篇关于如何在python中将RGB转换为CMYK,反之亦然?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆