You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.9 KiB
72 lines
1.9 KiB
|
|
|
|
|
|
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.
|
|
|