Ich entwickle eine iPad App, die Bilder von einem Fotografen zeigt. Diese Fotos werden auf einen Webserver hochgeladen und direkt über die App bereitgestellt, wo sie heruntergeladen und mit der folgenden Methode angezeigt werden:
%Vor%Ich kann eine ernsthafte Änderung in der Anzeige der Farben der Fotos zwischen dem Originalbild (das ist dasselbe, wenn es von der Disk oder aus dem Web auf meinem Mac und dem Mac des Fotografen angezeigt wird) und auf dem iPad (das Ergebnis) beobachten ist falsch in der App und sogar in Safari).
Nach einigem Suchen habe ich einige Posts gefunden, die erklären, dass iDevices kein eingebettetes Farbprofil verwendet, also habe ich festgestellt, dass ich diesen Weg gehen würde. Die Fotos werden mit den folgenden Informationen gespeichert:
Ich habe es in einigen Artikeln herausgefunden (zum Beispiel diesen Link von imageoptim oder analogsenses) dass ich das Bild für den Geräteexport speichern soll, indem ich es in sRGB umwandle, ohne das Farbprofil einzubetten, aber ich kann nicht herausfinden, wie ich das machen könnte? Jedes Mal, wenn ich es versuchte (ich habe keinen Photoshop, also habe ich die Kommandozeile ImageMagick benutzt), hat das resultierende Bild die folgenden Informationen und wird immer noch nicht korrekt auf meinem iPad angezeigt (und anderen iPads, die ich getestet habe):
Ich möchte es umwandeln, um es richtig darzustellen, jede Idee wäre wirklich willkommen:)
[EDIT] Es ist mir gelungen, ein korrektes Bild mit den "save for web" -Optionen von Photoshop zu erhalten, indem ich folgende Parameter verwende: Aber ich kann diese Einstellungen nicht automatisch auf alle meine Bilder anwenden.
Sie können zuerst den Farbraum durch CGImage erhalten.
%Vor%Und depping des colorSpace wenden eine Formatkonvertierung an. Um also den Farbraum eines Bildes zu erhalten, tun Sie Folgendes:
%Vor%Hinweis: Achten Sie darauf, den Regeln für get / create / copy für CG-Objekte zu folgen.
Farbkonvertierung in RGB8 (kann auch auf RGB16 oder RGB32 angewendet werden, indem die Bits pro Komponente in der Methode newBitmapRGBA8ContextFromImage
geändert werden):
ImageHelper.h
%Vor%ImageHelper.m
%Vor%