![]() |
Konvertierung YMCK mit ICC Profilen gesucht
Hallo zusammen,
für das Druck-Vorbereiten mit ICC Farbprofilen suche ich eine kleine Delphi-Lösung. Die muss nicht unbedings Alle Features haben aber einfaches Kopieren von dem Farbraum eines Kameraphotos (Mobilphone-Kamera) in einen YMCK Farbraum, zur Erstellung von Druckdaten (JPG, TIFF mit YMCK). Ich denke eine einfache RGB zu YMCK Formel reicht den Druckern heutzutage nicht mehr aus, denn das Ergebnis sollte schon einigermassen Farbecht sein. Ich habe ImageEN und Leadtools gefunden, die dafür was anbieten (scheint aber auch eher rudimentär). Es gibt auch sowas wie LittleCMS, das basiert aber auf C, scheint aber recht gut mit solchen Konvertierungen umgehen zu können. Ich bin einigermaßen verwundert das anscheinend auch Gimp nicht mit CMYK Profilen umgehen kann, erst mit einem zusätzlichen Plugin Separate+ wird da was gefriemelt. Eigentlich sollte Gimp doch Druckdaten ohne Probleme erzeugen können, als Photoshop-Alternative. Hat jemand Erfahrung mit der CMYK ICC Profilen im Delphi ? Wenn mögich in Delphi, also nicht unbedingt das Einbinden externer DLL, wäre aber auch als zweitbeste Lösung in Ordnung. Für ein paar Tipps zu einer guten Komponente wäre ich dankbar (womöglich gibt es auch Freeware). |
AW: Konvertierung YMCK mit ICC Profilen gesucht
Ich würde Dir empfehlen, dass bereits von Dir genannte,
![]() ...:cat:... |
AW: Konvertierung YMCK mit ICC Profilen gesucht
Dankesehr für die Info.
Ich hatte mir das schon angesehen, aber das wären dann 400 USD nur für die Konvertierungsfunktion, weil ich den ganzen Rest der Library eigentlich nicht unbedingt brauche. Ich hoffe noch das es da einen günstigeren Weg gibt. Zumindest weiss ich jetzt das die ICC-Profil Funktion bei Dir schonmal in Ordnung war. |
AW: Konvertierung YMCK mit ICC Profilen gesucht
Es scheint da wohl nicht viel zu geben im Delphiland.
Eine Möglichkeit wäre auch noch ![]() Das wäre zumindest auch von Delphi aus steuerbar. Ich habe aber auch einige negative Kommentare gefunden hinsichtlich des Ergebnisses. Vielleicht hat jemand Erfahrung damit bei der Umwandlung von Kamerabildern von sRGB in YMCK ? Ich suche eine möglichst generelle Lösung, die am Besten automatisch akzeptable Konvertierungen des Farbraums machen kann. Leichte Farbänderungen wären zu verschmerzen. |
AW: Konvertierung YMCK mit ICC Profilen gesucht
Ich habe keine praktische Erfahrung (außer mit Photoshop), aber wenn ich mir
![]() |
AW: Konvertierung YMCK mit ICC Profilen gesucht
Zitat:
...:cat:... |
AW: Konvertierung YMCK mit ICC Profilen gesucht
Hmm..
Google... 'Delphi ICC-Profile' ![]() ![]() Wenn ich dies richtig verstehe, ist es eine color management engine, welche mit ICC Profilen die Bilderdarstellung konvertiert.. Open Source... mit dem Beispiel: ![]() Edit: Noch nen Link hierzu: ![]() |
AW: Konvertierung YMCK mit ICC Profilen gesucht
Hallo HolgerX,
super, das LittleCMS hatte ich ja schon angesehen, aber das darin auch ein Delphi-Projekt ist hatte ich nicht auf dem Schirm. Interessant. Eingentlich hatte ich die Hoffnung auf eine Pascal-Lösung (ohne C-DLL), aber das ist zumindest eine Option für mich. Arbeitet denn jemand mit LittleCMS, ich frage mich wie die PErformance und Funktion von LittleCMS vs. ImageMagick vs. XYU ist, damit ich nicht mit der falschen Lösung anfange. @Jasocul Dankesehr für den Link. Ja das es solche Formeln gibt hatte ich schon geschrieben, die nutzen aber wenig wenn die Druckerei ICC-Profile braucht für die Verarbeitung. Ich wollte jetzt nicht erst austesten wie die Ergebnisse aussehen, sonder hoffe das ich gleich auf Anhieb eine akzeptable Lösung finden kann. Vermutlich muss man aber selbst mit Photoshop ein paar Proofs bei der Druckeri machen lassen um das richtig einzustellen. Genau diese Proofs möchte (kann) ich bei meiner Applikation nicht machen, sonder es muss direkt in guter Qualität und einigermaßen richtiger Farbe rauskommen. |
AW: Konvertierung YMCK mit ICC Profilen gesucht
ich arbeite mit Little-CMS, und bin soweit zufrieden.
Eine Delphi Schnittstelle (lcms2dll.pas) ist wie bereits erwähnt enthalten. CMYK Konvertierung habe ich allerdings noch nicht durchgeführt, ist aber sicher möglich. (cmsSigCmykData) Im übrigen könnte ich mir gut vorstellen, dass ImageMagic, ImageEN... intern Little-CMS verwenden. |
AW: Konvertierung CMYK mit ICC Profilen gesucht
Zitat:
Ich arbeite wohl noch nicht so lange mit CMYK, deshalb der Dreher im Titel :oops: Kann ich aber leider nicht mehr editieren, oder doch (Moderatoren ?). Ich habe gerade etwas mit LittleCMS herumgespielt, und sogar geschafft die DLL mit RadStudio zu kompilieren (Bin mir aber nicht ganz sicher ob das auch 100% klappt). Jedenfalls kann ich die DLL Funktionen aufrufen, und sogar darin debuggen (so sollte es sein), der unterstützte Compiler ist aber nur der freie BC5.5. Mit dem Demo habe ich auch herumgespielt, aber das scheint gar nicht zur Konvertierung aller Profile zu sein. Der nimm sich die RGB Monitorprofile von Windows, und kann auch nur in RGB konvertieren. Nach etwas Umbau kann er auch CYMK Profile konvertieren, dabei stürzt die DLL Funktion aber ab.
Delphi-Quellcode:
Das läuft leider out-of-the-box anscheinend nicht so problemlos.
xform := cmsCreateTransform(hSrc, TYPE_BGR_8,
hDest, // TYPE_BGR_8, TYPE_CMYK_8 , //<== mal versucht ob das läuft :-( Intent, Es könnte aber daran liegen das man bei CMYK auch eine Farbseparierung in vier Kanäle machen muss, und das es deshalb natürlich nicht in ein Bitmap passt. Es könnte natürlich auch an der DLL an sich liegen, hast Du eine Quelle wo man die sicher runterladen kann für Win64 ? |
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