Hi,
 
Yes, it could do what you want.
 
If you plan to recompile it, make sure to add the patches for IJG code.
This is because CMYK JPEG has to be inverted to be properly readed
by Photoshop. Anyway you have a precompiled binary here:
 
 
Regards,
Mart� Maria
The little cms project
http://www.littlecms.com
[EMAIL PROTECTED]
 
 
----- Original Message -----
Sent: Friday, February 14, 2003 12:05 AM
Subject: RE: [Lcms-user] Input and output profiles, and JPEG

Thanks.
 
I looked at the jpegicc utility, and it seems like it would do the whole thing for me, i.e.:
 
jpegicc.exe -imonitorProfile.icm -oprinterProfile.icm monitor.jpg printer.jpg
 
Am I missing something?
 
Thanks,
Richard
-----Original Message-----
From: Mart� Maria [mailto:[EMAIL PROTECTED]]
Sent: Thursday, February 13, 2003 10:33 AM
To: [EMAIL PROTECTED]; [EMAIL PROTECTED]
Subject: Re: [Lcms-user] Input and output profiles, and JPEG

Hi,
 
Yes, that is the correct way. If printer profile is adequate, you should see same colors on printer and screen.
 
For decodig, it hardly depends of the library being used for JPEG. If you are using Tom Lane's code (IJG), then is quite easy. 
Something like that:
 
  jpeg_start_decompress(&Decompressor);
 
  ScanLineIn    = malloc(Decompressor.output_width * 3);
  ScanLineOut  = malloc(Decompressor.output_width * 4);
 
 while (Decompressor.output_scanline <  Decompressor.output_height) {
 
       jpeg_read_scanlines(&Decompressor, &ScanLineIn, 1);
      cmsDoTransform(hXForm, ScanLineIn, ScanLineOut, Decompressor.output_width);
 
      .. do whatsever with CMYK data in ScanLineOut...
     
    }
 
 
You  can find sample code in jpegicc utility as well.
 
Regards,
Mart� Maria
The little cms project
http://www.littlecms.com
[EMAIL PROTECTED]
 
----- Original Message -----
Sent: Thursday, February 13, 2003 7:06 PM
Subject: [Lcms-user] Input and output profiles, and JPEG

I'm pretty new to lcms (I've used it a little).  I have the following situation.

I have a color profile monitorProfile.icm that maps Lab colors to RGB colors, and that profile is being used to create a particular JPEG file "monitor.jpg" that is displayed on a monitor.  I no longer have access to the original Lab colors, just the profile and monitor.jpg.  Now, I want to print monitor.jpg., i.e. convert "monitor.jpg" to something that can be printed, i.e. CMYK data, and I have a color profile printerProfile.icm that I can use. 

I've taken an example from the tutorial and modified it as shown below (the only changes I've made are in blue and red):



#include "lcms.h"


int main(void)
{

     cmsHPROFILE hInProfile, hOutProfile;
     cmsHTRANSFORM hTransform;
     int i;


     hInProfile  = cmsOpenProfileFromFile("monitorProfile.icm", "r");
     hOutProfile = cmsOpenProfileFromFile("printerProfile.icm", "r");



     hTransform = cmsCreateTransform(hInProfile,
                                           TYPE_RGB_8,
                                           hOutProfile,
                                           TYPE_CMYK_8,
                                           INTENT_PERCEPTUAL, 0);


     for (i=0; i < AllScanlinesTilesOrWatseverBlocksYouUse; i++)
     {
           cmsDoTransform(hTransform, YourInputBuffer,
                                      YourOutputBuffer,
                                      YourBuffersSizeInPixels);
     }



     cmsDeleteTransform(hTransform);
     cmsCloseProfile(hInProfile);
     cmsCloseProfile(hOutProfile);

     return 0;
}


 Is this the correct way to achieve what I want?  Also, I presume I need to extract the RGB data from the JPEG file and create my own CMYK file (i.e. lcms doesn't handle image file data extraction/creation).

Thanks,

Richard

Reply via email to