Ich habe das Demo 1:1 übernommen.
Nur als Output-Profile ein CMYK (wie z.B. CoatedFOGRA39.icc) genommen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Source, Dest: String;
hSrc, hDest: cmsHPROFILE;
xform: cmsHTRANSFORM;
i, PicW, PicH: Integer;
Intent: Integer;
dwFlags: DWORD;
begin
Source := SelectedFile(ComboBoxInput);
Dest := SelectedFile(ComboBoxOutput);
dwFlags := ComputeFlags;
Intent := IntentCodes[ComboBoxIntent.ItemIndex];
cmsSetAdaptationState( ScrollBar1.Position / 100.0 );
if (Source <> '') AND (Dest <> '') then
begin
hSrc := cmsOpenProfileFromFile(PAnsiChar(AnsiString(Source)), 'r');
hDest := cmsOpenProfileFromFile(PAnsiChar(AnsiString(Dest)), 'r');
if (hSrc <> Nil) and (hDest <> Nil) then
begin
xform := cmsCreateTransform(hSrc, TYPE_BGR_8,
hDest,
// TYPE_BGR_8,
TYPE_CMYK_8 , //<====
Intent,
dwFlags);
end
else
begin
xform := nil;
end;
if hSrc <> nil then
begin
cmsCloseProfile(hSrc);
end;
if hDest <> Nil then
begin
cmsCloseProfile(hDest);
end;
if (xform <> nil) then
begin
PicW := Image2.Picture.width;
PicH := Image2.Picture.height;
ProgressBar1.Min := 0;
ProgressBar1.Max := PicH;
ProgressBar1.Step := 1;
for i := 0 TO (PicH - 1) do
begin
if ((i MOD 100) = 0) then
ProgressBar1.Position := i;
cmsDoTransform(xform, Image1.Picture.Bitmap.Scanline[i],
Image2.Picture.Bitmap.Scanline[i], PicW);
end;
ProgressBar1.Position := PicH;
cmsDeleteTransform(xform);
end;
Image2.Repaint;
ProgressBar1.Position := 0;
end
end;
Ja, das Ziel ist es
a.) eine druckfertige Ausgabedatei zu erzeugen (am Besten kein JPG, weil mache Druckereien das ablehnen).
b.) einen Softproof zu machen wäre auch Interessant, weil anscheinend alle OpenSource- Lösungen damit nur schwer klarkommen.
Ich denke auch das die im Beispiel benutzte TImage nicht sinnvoll ist, denn die kann ja nur
RGB anzeigen.
Was ich brauche ist ein File mit den richtigen Daten.
Ich suche da noch die passenden Tools, weil ich im Prozess komplett auf Adobe verzichten möchte.
Ich beschäftige mich gerade auch mit ImageMagick zur Konvertierung, und habe da z.B. folgendes Script getestet
Code:
echo . Convert to TIF - stripped with %ICC_IN% to %ICC_OUT%
%PATH_PAR%\convert "%1" -strip -profile %ICC_IN% -intent relative -black-point-compensation -profile %ICC_OUT% out_cmyk_s1.tiff
Das File wird zwar von JPG 22MB auf TIF 230MB vergrößert, aber ich bin mir noch nicht sicher ob dies nur wirklich die 4 Farbkanäle enthält.
Mit LittleCMS habe ich so ein Ergebnis noch nicht hinbekommen.