CMYK im JPG Header
Thomas Seifert
- php
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
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
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?
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.
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
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 :)
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
1=grayscale
3=RGBDa 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
(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
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
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