PROGRAM LcmsTest; USES lcmsdll, Windows; TYPE ScanLineType = Array[0..255] OF PACKED RECORD b, g, r: Byte; END; VAR hInProfile, hOutProfile: cmsHPROFILE; hTransform: cmsHTRANSFORM; ScanLine, ScanLineTranslated: ScanLineType; r, g, b: Integer; BEGIN hInProfile := cmsOpenProfileFromFile('HPSJTW.ICM', 'r'); hOutProfile := cmsOpenProfileFromFile('sRGB Color Space Profile.ICM', 'r'); WriteLn('Input profile : ', cmsTakeProductName(hInProfile)); WriteLn('Output profile : ', cmsTakeProductName(hOutProfile)); hTransform := cmsCreateTransform(hInProfile, TYPE_BGR_8, hOutProfile, TYPE_BGR_8, INTENT_PERCEPTUAL, 0); WriteLn('As speed test, I will transform all spectrum...'); WriteLn('This implies an image of 255x255x255x3 = 47 MB!!!'); WriteLn('Each number represents a chunk 255x255x3 = 190.5 Kb! processed'); FOR r := 0 TO 255 DO BEGIN FOR g := 0 TO 255 DO BEGIN FOR b := 0 TO 255 DO BEGIN ScanLine[b].r := r; ScanLine[b].g := g; ScanLine[b].b := b; END; cmsDoTransform(hTransform, @ScanLine, @ScanLineTranslated, 255) END; Write(r:4, #$0d) END; WriteLn; WriteLn('Done!!!'); cmsDeleteTransform(hTransform); cmsCloseProfile(hInProfile); cmsCloseProfile(hOutProfile); END.