[英]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.