Thomas Seifert: CMYK im JPG Header

Hallo alle zusammen,

hat jemand eine Idee wie man mittels PHP script an die Header (nicht exif, nicht ipct) Daten eines JPG´s ran kommt?

Mittels PHP internen Funktionen wird es sicher nicht gehen. Aber vielleicht kennt jemand ein Script welches solche Daten auslesen kann.

Was auch schon eine starke Hilfe wäre wenn ich wüßte wie CMYK allgemein im JPG gespeichert wird.

Ziel ist es herauszufinden ob ein jpg Bild im RGB oder CMYK gespeichert wurde.

Danke schonmal für Eure Hilfe

  1. Tachchen!

    Ziel ist es herauszufinden ob ein jpg Bild im RGB oder CMYK gespeichert wurde.

    Kann überhaupt schon ein Browser mit anderen Profilen als sRGB umgehen?
    Oder ist das irrelevant für das eigentliche Ziel deines Projekts?

    Gruß

    Die schwarze Piste

    1. der neue firefox kann es. aber das vollkommen irrelevant für das ziel :)

      Kann überhaupt schon ein Browser mit anderen Profilen als sRGB umgehen?
      Oder ist das irrelevant für das eigentliche Ziel deines Projekts?

      1. Hi Thomas,

        der neue firefox kann es. aber das vollkommen irrelevant für das ziel :)

        Firefox 3.5 soll CMYK JPGs darstellen können? Kann ich so nicht bestätigen, Firefox zeigt solche Bilder zwar an, aber die Farben werden komplett falsch dargestellt. Öffne ich das selbe Bild mit der normalen Windows-Bildanzeige werden die Farben korrekt dargestellt.

        Viele Grüße,
          ~ Dennis.

        1. Tachchen!

          Firefox 3.5 soll CMYK JPGs darstellen können? Kann ich so nicht bestätigen, Firefox zeigt solche Bilder zwar an, aber die Farben werden komplett falsch dargestellt.

          Das war auch meine Erfahrung, obwohl ich schon für FF 3.0 Colormanagement-
          fähigkeiten erlesen zu haben glaubte. Jetzt bin ich schlauer:
          https://developer.mozilla.org/En/ICC_color_correction_in_Firefox

          ... mal sehen, ob er jetzt nur überhaupt ein Colormangement besitzt oder
          ob er wirklich zwischen verschiedensten Farbprofilen aus den den
          RGB- und CMYK-Farbräumen unterscheiden kann.

          Gruß

          Die schwarze Piste

          1. Firefox 3.5 soll CMYK JPGs darstellen können? Kann ich so nicht bestätigen, Firefox zeigt solche Bilder zwar an, aber die Farben werden komplett falsch dargestellt.

            Das war auch meine Erfahrung, obwohl ich schon für FF 3.0 Colormanagement-
            fähigkeiten erlesen zu haben glaubte. Jetzt bin ich schlauer:
            https://developer.mozilla.org/En/ICC_color_correction_in_Firefox

            da mögt ihr wohl recht haben, aber zumindest stellt es der FF schonmal dar im Gegensatz zum roten Kreuzchen vom ie :)

  2. Hello,

    das ist jetzt nur geraten, aber es könnte im Feld

    "Units used for Resolution" signiert sein.

    typedef struct _JFIFHeader
    {
      BYTE SOI[2];          /* 00h  Start of Image Marker     */
      BYTE APP0[2];         /* 02h  Application Use Marker    */
      BYTE Length[2];       /* 04h  Length of APP0 Field      */
      BYTE Identifier[5];   /* 06h  "JFIF" (zero terminated) Id String */
      BYTE Version[2];      /* 07h  JFIF Format Revision      */
      BYTE Units;           /* 09h  Units used for Resolution */
      BYTE Xdensity[2];     /* 0Ah  Horizontal Resolution     */
      BYTE Ydensity[2];     /* 0Ch  Vertical Resolution       */
      BYTE XThumbnail;      /* 0Eh  Horizontal Pixel Count    */
      BYTE YThumbnail;      /* 0Fh  Vertical Pixel Count      */
    } JFIFHEAD;

    1=grayscale
    3=RGB

    Da könnte dann doch 4 für CMYK stehen, oder?

    Lass Dir doch mal die ersten 16 Bytes von unterschiedlichen JPEGs hexadezimal listen und poste sie hier für uns alle.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. 1=grayscale
      3=RGB

      Da könnte dann doch 4 für CMYK stehen, oder?

      ja das die Lösung
      nach 45h Googlen und Fragen hab ich auch die einfachste Antwort drauf gefunden

      $size = getimagesize($filename);
      rückgabe:
      channels hat für RGB-Grafiken den Wert 3, für CMYK den Wert 4. bits entspricht der Anzahl der Bits pro Farbe.....

      einfacher als man gedacht hat

  3. (Hallo|Hi(ho)|Mahlzeit) Thomas Seifert,

    hat jemand eine Idee wie man mittels PHP script an die Header (nicht exif, nicht ipct) Daten eines JPG´s ran kommt?

    Ich hatte mir (schon vor längerer) Zeit ein Script zusammengedengelt, welches die Segmente einer JPEG|JIF-Datei auslesen,
    kopieren und entfernen konnte (das Ziel war das entfernen unnötiger Kommentar-Segmente). Mal sehen, ob ich das wiederfinde.

    Von CMYK-JPEGs war mir da aber noch nichts bekannt. Der einzigen Hinweis, den ich auf die Schnelle gefunden habe,
    steht in der Wikipedia. Dort wird ausdrücklich darauf hingewiesen, dass diese Adobe-CMYK-JPEGs nicht mit JFIF kompatibel sind --
    was den "geratenen" Rat mit dem JFIF-App-Segment von Tom leider unbrauchbar machen würde.

    Mittels PHP internen Funktionen wird es sicher nicht gehen.

    Naja, fread() und unpack() sind schon interne Funktionen. Aber natürlich wissen die nichts von JIF-App-Segmenten. ;-)

    Hast du dir schon mal angesehen, was getimagesize() in die Variable für den Parameter "imageinfo" schreibt?
    ... und mit "gewöhnlichen" JPEG-Dateien verglichen?

    Was auch schon eine starke Hilfe wäre wenn ich wüßte wie CMYK allgemein im JPG gespeichert wird.

    Das wäre sicher einfach herauszufinden, wenn ich eine solche Datei zur Verfügung hätte.

    Ziel ist es herauszufinden ob ein jpg Bild im RGB oder CMYK gespeichert wurde.

    MffG
    EisFuX

    1. Nachtrag:

      Ziel ist es herauszufinden ob ein jpg Bild im RGB oder CMYK gespeichert wurde.

      Höchstwahrscheinlich werden solche JPEGs durch einem APP14-Marker gekennzeichnet.
      Denn erkennt man an der Bytefolge 0xFFEE, danach kommen zwei Bytes, die die Länge
      des Segments kennzeichnen. Und danach irgendeine Struktur, aus der man hoffentlich
      was brauchbares auslesen kann.

      MffG
      EisFuX

  4. Hallo,

    Was auch schon eine starke Hilfe wäre wenn ich wüßte wie CMYK allgemein im JPG gespeichert wird.

    Also soweit ich weiß, kannst Du ein JPG gar nicht im CMYK-Farbraum speichern ... Intern wird ein JPG wohl in den YCbCr-Farbraum überführt, der sich verlustfrei in den RGB-Farbraum konvertieren lässt und umgekehrt (zumindest nach diesem Post), bei CYMK ist dies nicht möglich.

    Gruß, luti