Hello, Thanks for your code, it works. I'm still having problems with selecting the right cmsCIExyYTRIPLE settings (given it's to convert from Mac-created sRGB/AdobeRGB to linear for further rendering and compositing), but overall - code compiles, works and even produces the images.
So - thanks again. Alexei On 3/12/07, Kai-Uwe Behrmann <[EMAIL PROTECTED]> wrote: > 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