rgb值是否等于cmyk百分比?

时间:2010-11-20 06:57:48

标签: photoshop rgb

是rgb数值等于cmyk百分比吗?

详细信息:

我有一些rgb值,例如r-212 g-231 b-211,在Photoshop中它显示cmyk为40%34%80%0%。我想知道我们可以通过给出cmyk百分比获得相同的rgb值?因为我必须在一些特定的应用程序中使用rgb百分比,但我没有在photoshop的帮助下得到它...请简单地告诉我,  是否有可能在photoshop的帮助下获得rgb值百分比?

3 个答案:

答案 0 :(得分:1)

你的问题不是很清楚,但是:不,rgb和cmyk不一样,看看这张图片看看他们可以代表的不同颜色空间(显然,rgb由3个值组成,cmyk由4)组成:

rgb vs cmyk

答案 1 :(得分:1)

您可以近似RGBCMYK颜色空间之间的转换,但它不会完全准确或双向。两种颜色之间存在很多差异这里变得相关的空间,包括它们各自的色域(参见oezi的答案中的图表),加法与减法模型以及CMYK空间中黑色(键)的存在。

如果您只是对将颜色从RGB转换为CMYK表示的简单方法感兴趣,可以使用以下代码(在C#中任意选择;可以随意转换为您选择的语言):

public CmykColor RgbToCmyk(int R, int G, int B)
{
    if ((R < 0) || (R > 255) || (G < 0) || (G > 255) || (B < 0) || (B > 255)) {
        throw new ArgumentException("RGB values must be in the range of 0 to 255");
    }

    if ((R == 0) && (G == 0) && (B == 0)) {
        return new CmykColor(0, 0, 0, 1);
    } else {
        double calcR = 1 - (R / 255);
        double calcG = 1 - (G / 255);
        double calcB = 1 - (B / 255);

        double K = Math.Min(calcR, Math.Min(calcG, calcB));
        double C = (calcR - K) / (1 - K);
        double M = (calcG - K) / (1 - K);
        double Y = (calcB - K) / (1 - K);

        return new CmykColor(Convert.ToInt32(C), Convert.ToInt32(M), Convert.ToInt32(Y), Convert.ToInt32(K));
    }
}

但是你必须决定这个简单的近似是否会产生足够“足够接近”的结果。 最重要的事情是真正的转换完全取决于物理设备/过程,并且需要为每个设备准确校准颜色配置文件(显示RGB的显示器,打印CMYK的打印机和基板)收到CMYK)。

这有助于解释为什么上述算法(或您可能自己实现的任何其他算法)永远不会与Photoshop返回的结果相匹配,后者使用颜色配置文件和一些其他专有算法来处理其转换。如果这种准确度非常重要,您可以考虑使用类似Windows Color Management APIs之类的东西来处理转换,这将自动应用当前颜色配置文件,但您可能会发现这些结果并不完全正确匹配Photoshop的。

底线是颜色是主观的。正如我在开头提到的那样,即使你克服了准确性障碍,你仍然没有双向的转换过程。 / strong>即使在Photoshop中,也无法将图像从RGB转换为CMYK,然后再返回,而不会丢失或更改某些颜色信息。


编辑:您在评论中提到过几次您只想要“RGB值百分比”。我认为这意味着 CMYK 百分比,但我想如果你只想将RGB组件的标准0-255值转换为 RGB 百分比,则值得指出,你可以将每个值除以255(最大值),然后乘以100.所以,例如:

  

红色= RGB(255,0,0)= 100%红色,0%绿色,0%蓝色

     

DarkSeaGreen = RGB(143,188,143)= 56%红色,74%绿色,56%蓝色

答案 2 :(得分:0)

不完全。 formula稍微复杂一点,因为CMYK的组件比RGB多。