Zitat:
Zitat von scream479
Hallo,
Ich hätte da folgendes Problem.
Ich habe einen Fotoupload bei dem ich ausschließlich JPGs zulasse.
Heute musste ich feststellen, dass es auch JPGs gibt die nicht in RGB,
sondern in CMYK Farben vorliegen.
Das führt leider dazu dass die Fotos upgeloadet werden,
jedoch auf der Webseite nicht angezeigt werden können.
|
CMYK ergibt im WWW auch nicht viel Sinn. Die Funktion imagecreatefromjpg() kann solche Dateien aber lesen und nach TrueColor-RGB convertieren. Mit
PHP-Code:
// einlesen und nach RGB wandeln
$img_rsrc = imagecreatefromjpeg($cmyk_file);
// hier bspw. Thumbnail erzeugen
// ...
// als standardkonformes JPEG speichern
imagejpeg($img_rsrc, $rgb_file);
kannst diese Dateien (oder zumindest eine Vorschaugrafik davon) wieder für Webbrowser "sichtbar" machen. Das erspart das Herumfummeln mit der CMYK-Erkennung. Da CMYK-JPEGs nicht standardisiert sind, gibt es auch keine standardisierte Vorgehensweise, diese 100-prozentig zu erkennen.
Ein paar Beispiele, wie es gemacht wird:
- in
Javas ImageIO
- in der
Python Imaging Library
- in der
LibGD (die hinter den "Standard"-Image-Funktionen von PHP steckt)
- oder
auf die primitive Art. (Obwohl ich da meine Zweifel habe, dass das bei
allen CMYK-JPEGs funktioniert)
Zitat:
|
Ich verwende Image Magick.
|
Vielleicht hilft die gleiche Vorgehensweise wie oben anhand der Image-Funktionen beschrieben: Grafik einlesen und als JPEG wieder speichern. Wenn die GDLib das kann, sollte es mit Image Magick erst recht möglich sein.
Zitat:
|
Zitat von mkb_webprint
Läuft getimagesize auf einen Fehler oder warum ist das negativ?
Das gibt doch auch zurück ob CMYK oder RGB...?
|
Das würde mich auch mal interessieren, was getimagesize() so zurückliefert (besonders die Werte für 'channels' und 'bits'). Und dabei das
$imageinfo-Array nicht vergessen.