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

C# 使用ICC配置文件将CMYK颜色转换为Cielab或RGB颜色转换为Cielab,c#,colors,rgb,cmyk,color-profile,C#,Colors,Rgb,Cmyk,Color Profile,我想在C#中使用.icc配置文件“ISOnewspaper26v4.icc”! 但是我现在有个问题。。我不知道如何使用此ICC配置文件将CMYK颜色转换为实验室值或将RGB转换为实验室值??!!如何分配配置文件 据我所知,C#和相关库不包含任何用于将CMYK或RGB转换为Lab的函数。这些库包含用于将CMYK转换为RGB的函数(请参见此) Windows API似乎具有在不同颜色系统之间转换的功能。它至少适用于将RGB转换为CMYK(参见此) 您可能需要执行以下扩展: [StructLa

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

据我所知,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颜色。不过我还没有试过。

在实验室空间ICC配置文件的帮助下,应该可以“转换”到CIE实验室。AGFA过去有一个。否则,必须编写一个例程,在ICM之外,通过A2B0标记手动转换输出配置文件。注意,ISOnewspaperv4配置文件是财务问题。

Du您知道,我是否可以在“mscms”中导入特定的ICC配置文件以转换此颜色。我知道这在LittleCMS中是可能的,但我从未与pInfoke的推荐人合作过。