繁体   English   中英

c#使用ICC配置文件将CMYK颜色转换为Cielab或将RGB颜色转换为Cielab

[英]c# Color Conversion CMYK to Cielab or RGB to Cielab using ICC Profile

我想在C#中使用.icc配置文件“ ISOnewspaper26v4.icc”! 但是我现在有一个问题..我不知道如何使用此ICC配置文件将CMYK颜色转换为Lab值或将RGB转换为Lab值! 如何分配个人资料??

据我所知,C#和关联的库不包含任何用于将CMYK或RGB转换为Lab的函数。 用于将CMYK转换为RGB的包含功能(请参阅此答案 )。

Windows API似乎具有在不同颜色系统之间进行转换的功能。 至少可以将RGB转换为CMYK(请参阅此答案 )。

您可能需要以下扩展:

    [StructLayout(LayoutKind.Sequential)]
    public struct LabCOLOR
    {
        public ushort L;
        public ushort a;
        public ushort b;
        public ushort pad;
    };

    [DllImport("mscms.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
    static extern bool TranslateColors(
        IntPtr hColorTransform,
        [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2), In] RGBColor[] inputColors,
        uint nColors,
        ColorType ctInput,
        [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2), Out] LABColor[] outputColors,
        ColorType ctOutput);

然后,您应该可以将“ cmyk”替换为“ lab”,以从RGB转换为Lab颜色。 我还没有尝试过。

在Lab space ICC配置文件的帮助下,应该有可能“转换”为CIE Lab。 AGFA曾经有一个。 否则,将不得不编写例程以通过A2B0标签在ICM之外手动进行输出配置文件的转换。 请注意,ISOnewspaperv4配置文件存在缺陷。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM