【发布时间】:2013-01-22 21:58:42
【问题描述】:
我想在 C# 中使用 .icc 配置文件“ISOnewspaper26v4.icc”! 但我现在有一个问题.. 我不知道如何使用这个 ICC 配置文件将 CMYK 颜色转换为 Lab 值或将 RGB 转换为 Lab 值??!!我如何分配配置文件?
【问题讨论】:
标签: c# colors rgb cmyk color-profile
我想在 C# 中使用 .icc 配置文件“ISOnewspaper26v4.icc”! 但我现在有一个问题.. 我不知道如何使用这个 ICC 配置文件将 CMYK 颜色转换为 Lab 值或将 RGB 转换为 Lab 值??!!我如何分配配置文件?
【问题讨论】:
标签: c# colors rgb cmyk color-profile
据我所知,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 颜色。不过我没试过。
【讨论】:
应该可以在实验室空间 ICC 配置文件的帮助下“转换”为 CIE 实验室。 AGFA曾经有一个。否则,将不得不编写一个例程,在 ICM 之外通过 A2B0 标签手动进行转换,以获得输出配置文件。请注意,ISOnewspaperv4 配置文件很古怪。
【讨论】: