ICC ベースの色変換には、 Little Color Management Systemを使用できます。(ダウンロード アーカイブからすべての .c および .h ファイルを iOS Xcode プロジェクトに追加しました。次のコードを問題なくコンパイルして実行しました。)
注意: RGB と CMYK はデバイスに依存する色空間で、Lab はデバイスに依存しない色空間です。したがって、RGB から Lab に変換するには、変換用にデバイスに依存しない (または「調整された」) RGB 色空間 (sRGB など) を選択する必要があります。
Little CMS には、sRGB および Lab 色空間用のプロファイルが組み込まれています。sRGB から Lab への変換は次のようになります。
色変換を作成する:
cmsHPROFILE rgbProfile = cmsCreate_sRGBProfile();
cmsHPROFILE labProfile = cmsCreateLab4Profile(NULL);
cmsHTRANSFORM xform = cmsCreateTransform(rgbProfile, TYPE_RGB_FLT, labProfile,
TYPE_Lab_FLT,
INTENT_PERCEPTUAL, 0);
cmsCloseProfile(labProfile);
cmsCloseProfile(rgbProfile);
色を変換する:
float rgbValues[3];
// fill rgbValues array with input values ...
float labValues[3];
cmsDoTransform(xform, rgbValues, labValues, 1);
// labValues array contains output values.
色変換を破棄する:
cmsDeleteTransform(xform);
もちろん、変換は 1 回だけ作成され、すべての色変換に使用されます。
RGB から CMYK への変換には、Little CMS も使用できますが、ICC プロファイルを提供する必要があります。たとえば、無料の Adobe ダウンロード ページICC profile downloads for Mac OSからのものです。
RGB から CMYK への変換のコード例:
float rgb[3]; // fill with input values (range 0.0 .. 1.0)
float cmyk[4]; // output values (range 0.0 .. 100.0)
cmsHPROFILE rgbProfile = cmsCreate_sRGBProfile();
// The CMYK profile is a resource in the application bundle:
NSString *cmykProfilePath = [[NSBundle mainBundle] pathForResource:@"YourCMYKProfile.icc" ofType:nil];
cmsHPROFILE cmykProfile = cmsOpenProfileFromFile([cmykProfilePath fileSystemRepresentation], "r");
cmsHTRANSFORM xform = cmsCreateTransform(rgbProfile, TYPE_RGB_FLT, cmykProfile,
TYPE_CMYK_FLT,
INTENT_PERCEPTUAL, 0);
cmsCloseProfile(cmykProfile);
cmsCloseProfile(rgbProfile);
cmsDoTransform(xform, rgb, cmyk, 1);
cmsDeleteTransform(xform);