![]() |
AW: Konvertierung YMCK mit ICC Profilen gesucht
zeig doch mal wie hSrc und hDest erzeugt wurden.
Wie wendest Du cmsDoTransform an, und wie werden die Src und Dst Bitmaps erzeugt? Was genau ist eigentlich Deine die Zielsetzung? a) eine Ausgabedatei im Format CMYK für die Druckerei zu erzeugen, oder b) auf dem Bildschirm das korrekt darstellen was die Druckerei letzten Endes erzeugt ? |
AW: Konvertierung YMCK mit ICC Profilen gesucht
Ich habe das Demo 1:1 übernommen.
Nur als Output-Profile ein CMYK (wie z.B. CoatedFOGRA39.icc) genommen:
Delphi-Quellcode:
Ja, das Ziel ist es
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; 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:
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.
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 Mit LittleCMS habe ich so ein Ergebnis noch nicht hinbekommen. |
AW: Konvertierung YMCK mit ICC Profilen gesucht
Das Ziel Bitmap muss natürlich ein 32Bit Format aufweisen.
Bitmap.PixelFormat:=pf32bit; zur Sicherheit noch Bitmap.HandleType:=bmDIB; Eine 32Bit Bitmap wird aber normalerweise als RGBA interpretiert. Wobei A der Alpha Kanal(Transparenz) darstellt. CMYK kann so nicht direkt angezeigt werden. Das muss zuvor nach RGB (zurück) konvertiert werden. Im Übrigen würde ich keine TImage Komponenten sondern direkt TBitmap verwenden. |
AW: Konvertierung YMCK mit ICC Profilen gesucht
Danke für den Tipp, ich werde es damit nochmal versuchen.
Ja das vor- rückkonvertieren ist klar, ich bin mir da dann aber trotzdem nicht sicher ob die Anzeige noch dem entspricht was ich eingegeben habe. Kennst Du eventuell ein gutes Test und Anzeigetool, mit dem man alle möglichen Bilder prüfen und anzeigen kann (ausserhalb der Adobe-Welt) ? Könnte sein das Mac da etwas hat, z.B. das "ColorSync" Dienstprogramm, aber alle diese Tools helfen anscheinend nur bei einem kleinen Teil des ganzen Workflows. |
AW: Konvertierung YMCK mit ICC Profilen gesucht
Affinity Photo könnte ein Blick wert sein.
Ist zwar nicht kostenlos aber für die gebotene Leistung sehr günstig |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz