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

Reply via email to