AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Konvertierung YMCK mit ICC Profilen gesucht
Thema durchsuchen
Ansicht
Themen-Optionen

Konvertierung YMCK mit ICC Profilen gesucht

Ein Thema von Rollo62 · begonnen am 30. Sep 2019 · letzter Beitrag vom 4. Okt 2019
Antwort Antwort
Seite 2 von 2     12   
Raible

Registriert seit: 12. Mär 2012
30 Beiträge
 
#11

AW: Konvertierung YMCK mit ICC Profilen gesucht

  Alt 1. Okt 2019, 19:07
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 ?
  Mit Zitat antworten Zitat
Rollo62
Online

Registriert seit: 15. Mär 2007
3.908 Beiträge
 
Delphi 12 Athens
 
#12

AW: Konvertierung YMCK mit ICC Profilen gesucht

  Alt 2. Okt 2019, 08:47
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.

Geändert von Rollo62 ( 2. Okt 2019 um 08:50 Uhr)
  Mit Zitat antworten Zitat
Raible

Registriert seit: 12. Mär 2012
30 Beiträge
 
#13

AW: Konvertierung YMCK mit ICC Profilen gesucht

  Alt 2. Okt 2019, 19:13
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.
  Mit Zitat antworten Zitat
Rollo62
Online

Registriert seit: 15. Mär 2007
3.908 Beiträge
 
Delphi 12 Athens
 
#14

AW: Konvertierung YMCK mit ICC Profilen gesucht

  Alt 4. Okt 2019, 12:45
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.

Geändert von Rollo62 ( 4. Okt 2019 um 12:49 Uhr)
  Mit Zitat antworten Zitat
Raible

Registriert seit: 12. Mär 2012
30 Beiträge
 
#15

AW: Konvertierung YMCK mit ICC Profilen gesucht

  Alt 4. Okt 2019, 15:11
Affinity Photo könnte ein Blick wert sein.
Ist zwar nicht kostenlos aber für die gebotene Leistung sehr günstig
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz