【问题标题】:c# Color Conversion CMYK to Cielab or RGB to Cielab using ICC Profilec# 颜色转换 CMYK 到 Cielab 或 RGB 到 Cielab 使用 ICC 配置文件
【发布时间】:2013-01-22 21:58:42
【问题描述】:

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

【问题讨论】:

    标签: c# colors rgb cmyk color-profile


    【解决方案1】:

    据我所知,C# 和相关的库不包含任何将 CMYK 或 RGB 转换为 Lab 的函数。用于将 CMYK 转换为 RGB 的包含函数(参见 answer)。

    Windows API 似乎具有在不同颜色系统之间进行转换的功能。它至少适用于将 RGB 转换为 CMYK(参见 answer)。

    您可能需要以下扩展:

        [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 颜色。不过我没试过。

    【讨论】:

    • 你知道,我是否可以在“mscms”中导入特定的 ICC 配置文件来转换这种颜色。我知道在 LittleCMS 中这是可能的,但我从未使用过 pInfoke 引用。
    【解决方案2】:

    应该可以在实验室空间 ICC 配置文件的帮助下“转换”为 CIE 实验室。 AGFA曾经有一个。否则,将不得不编写一个例程,在 ICM 之外通过 A2B0 标签手动进行转换,以获得输出配置文件。请注意,ISOnewspaperv4 配置文件很古怪。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-13
      • 2011-07-11
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      相关资源
      最近更新 更多