Alexei, below a example how the linear RGB profile. You can of course take some other standard values.
void write_profile(float gamma, float rx, float ry, float gx, float gy, float bx, float by) { cmsCIExyYTRIPLE p = {{rx,ry},{gx,gy},{bx,by}}; LPGAMMATABLE g[3]; g[0] = g[1] = g[2] = cmsBuildGamma(1, gamma); cmsHPROFILE hp = cmsCreateRGBProfile( cmsD50_xyY(), &p, g); _cmsSaveProfile( hp, "matrixRGB.icc" ); cmsCloseProfile(hp); } regards Kai-Uwe Behrmann -- development for color management www.behrmann.name + www.oyranos.org + www.cinepaint.org Am 12.03.07, 16:19 -0700 schrieb Alexei Puzikov: > Hello, > > I've tried to find out the answer to this question in tutorial, > samples sources and in the mailing list, but failed to achieve the > required results. > > So, I have lots of TIFF files created on Macs with Adobe Photoshop. > Some of them are in sRGB; most of them are in AdobeRGB. All of them > have the corresponding ICC profiles embedded inside. > > So, I need to convert them to linear color space, basically, by going > >from sRGB (approx. gamma 2.2, but the exact algorithm is slightly > different) and AdobeRGB (also almost 2.2). Previously I've been > working with sRGB only and used some custom math, but now we're > switching to AdobeRGB and I don't want to touch the math anymore, so I > want to switch to LCMS for conversion. > > The problem is - how do I create the linear gamma 1.0 profile and > corresponding transform? > > LPGAMMATABLE Transfer[3]; > cmsHPROFILE LinearProfile; > > Transfer[0] = cmsBuildGamma(256, 1); > Transfer[1] = cmsBuildGamma(256, 1); > Transfer[2] = cmsBuildGamma(256, 1); > > LinearProfile = cmsCreateLinearizationDeviceLink(icSigRgbData, > Transfer); > > doesn't work: > > int iccfound = 0; > iccfound = TIFFGetField(in, TIFFTAG_ICCPROFILE, &profile_size, > &icc_profile); > if (iccfound) { > TiffProfile = cmsOpenProfileFromMem(icc_profile, > profile_size); > } > > and then > > DWORD PixelType = TYPE_RGBA_16; > hTransform = cmsCreateTransform(TiffProfile, > PixelType, > LinearProfile, > PixelType, > INTENT_PERCEPTUAL, 0); > > results in error 12288: invalid PCS. And I still think it shouldn't, > since it's not real profile per se. > > So what's the basic idea? How can I create the linear profile without > reverting to some ICC files I have no idea where to get from? > > Sorry if the question is dumb, but I'm really out of ideas. > > Alexei Puzikov > ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Lcms-user mailing list Lcms-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lcms-user