2012-09-24 18 views

risposta

9

tl; dr utilizzare lo spazio colore calibrato.

Invece di rigurgitare la documentazione - la risposta è nella Color Programming Topics

Anche il Color Space Overview

enter image description here

A cura di aggiungere

sRGB è uno degli spazi di colore di nome.

enter image description here

Infine - e questa è l'ultima immagine dalla documentazione, e spero che risponde alla tua domanda - se si desidera utilizzare uno spazio di colore, utilizzare il calibrato uno.

enter image description here

+0

Ok, che risponde liberamente per '' colorWithCalibratedRed' e colorWithDeviceRed', ma quello di 'colorWithSRGBRed'? – haroldcampbell

+0

grazie a @abizern – haroldcampbell

6

Un insieme di valori RGB in realtà non descrivere un colore. Si dice solo la scheda grafica quanta percentuale di luce rossa, verde e blu che si desidera in quel colore, ma un colore come il 50% rosso puro non è dello stesso colore su tutti i monitor per due motivi:

  1. 50 % non è la stessa luminosità relativa su tutti i monitor a causa della leggermente diverse curve gamma (non è la stessa luminosità assoluto sia a causa della diversa luminosità della retroilluminazione, ma che in realtà è irrilevante - solo valori relativi sono importanti)

  2. Anche 100 % Il rosso non è lo stesso tono rosso dei monitor con diverse "sfumature" di rosso, a seconda del colore della retroilluminazione e del colore ERS.

Quindi la stessa combinazione di RGB può apparire diversa su diversi monitor. Essendo una bella arancia sul tuo monitor, potrebbe sembrare un rosso molto luminoso su alcuni e come un giallo scuro su altri monitor. Sono gli stessi valori RGB ovunque, ma non dello stesso colore.

Per rendere RGB un "colore", necessita anche di uno spazio colore, che definisce uno spazio di colori in cui i valori RGB sono come le coordinate in quello spazio e quindi descrivono un colore esatto.

enter image description here (L'uploader originale è stato Cpesacreta a Wikipedia in lingua italiana -. Trasferito da en.wikipedia a Commons by aboalbiss)

Se si utilizza colorWithDeviceRed:green:blue:alpha:, valori RGB non vengono trasformati, essi sono riportati esattamente come questo alla tua scheda grafica. Quindi il colore avrà davvero questi valori RGB, ma i risultati che l'utente vedrà sullo schermo varieranno da schermo a schermo.

Se si utilizza colorWithSRGBRed:green:blue:alpha:, i valori RGB vengono interpretati come valori RGB dello spazio colore sRGB. Il sistema conosce lo spazio e quindi conosce il colore qui descritto. Se il sistema conosce anche lo spazio colore del monitor (ad esempio perché è stato calibrato in fabbrica o dagli utenti che utilizzano uno strumento di calibrazione), allora può trasformare i valori RGB dallo spazio colore sRGB allo spazio colore nativo del tuo tenere sotto controllo. Questa trasformazione cambierà i valori RGB assoluti nel loro percorso verso il tuo monitor. Potresti aver usato #758299 e il monitor visualizzerà effettivamente #7483A1 ma questo è dovuto al fatto che il colore #7483A1 appare esattamente come il colore sRGB #758299 su questo display, quindi l'utente vede il colore corretto previsto (anche se potrebbe non avere gli stessi valori RGB - ma gli utenti non vedono i valori RGB, vedono i colori).

sRGB è uno spazio colore molto popolare, è il più compatibile, la maggior parte delle applicazioni grafiche e del sistema lo sanno e ci si può aspettare che ogni display moderno sia in grado di visualizzare correttamente praticamente tutti i colori sRGB esistenti. Ma è anche uno spazio colore molto limitato. sRGB è solo un sottoinsieme di tutti i colori che la maggior parte dei dispositivi può visualizzare a partire da oggi e inoltre non offre 16,7 milioni di colori diversi (anche se ci sono molte combinazioni RGB possibili). Ecco perché esistono spazi cromatici più ampi, come quello di Adobe che trovi in ​​tutte le app grafiche di Adobe. Apple offre uno spazio colore denominato "spazio colore calibrato", talvolta chiamato anche "spazio colore generico". Lo si utilizza con colorWithCalibratedRed:green:blue:alpha: e da quello che posso trovare nella documentazione, questo è fondamentalmente lo spazio colore HSB, che è più largo di sRGB (internamente memorizza i colori in un formato diverso ma esiste una formula fissa, neutra del dispositivo per convertire RBG in HSB e HSB di nuovo a RGB).

Quindi, se la correttezza del colore è importante per te (l'utente deve vedere lo stesso colore che vedi sullo schermo, indipendentemente dai valori RGB necessari per ottenerlo), devi sempre specificare i colori in combinazione con uno spazio colore. Indipendentemente dal fatto che usi sRGB o generico/calibrato, non importa, usa lo stesso in tutta la tua app.

Se si utilizza uno strumento che segnala colori in sRGB, i valori esadecimali corrispondono solo a tale spazio. Nota che tutti gli standard web usano implicitamente i colori sRGB. Pertanto, quando si utilizzano i colori esadecimali nei file HTML o CSS, questi vengono sempre interpretati come valori sRGB. Inoltre, quando ricevi i colori da una fonte esterna e questa fonte non ti dice a quale spazio colore essi appartengono, è sempre più sicuro assumere sRGB.

Se andate a leggere i colori dal vostro schermo utilizzando il selettore colore della Meter Digital Color app (che viene sempre con MacOS), assicurarsi di scegliere Display in RGB generico o Display in sRGB ma don' t utilizzare Visualizzare valori nativi se si prevede di utilizzare questi valori in app o su siti Web. I valori nativi sono solo ciò che il tuo sistema utilizza realmente per visualizzare quel colore, ma questa combinazione appare solo in quel modo sul tuo sistema.

Ovviamente, niente di tutto ciò può funzionare se lo schermo non è calibrato correttamente. I display moderni hanno un profilo di calibrazione incorporato che i computer possono scaricare e i dispositivi mobili hanno la loro calibrazione memorizzata sul dispositivo. Se si dispone di un monitor più vecchio o se si ritiene che il profilo non sia preciso (o non più accurato a causa dell'invecchiamento della visualizzazione!), È necessario ottenere l'hardware di calibrazione del display e utilizzare uno strumento come DisplayCAL per generare un profilo migliore (gratuito, OpenSource, tutte le principali piattaforme supportano una vasta gamma di hardware USB)

Una domanda comune è, cosa succede realmente, se interpreto i valori RGB in base allo spazio colore sbagliato? Beh, non sembrerà completamente sbagliato.Se visualizzi un'immagine di uno spazio cromatico più piccolo come se fosse di uno più grande, l'immagine apparirà molto "vibrante" (tutti i colori hanno molta saturazione, i contrasti saranno migliorati, la nitidezza verrà migliorata), se è il viceversa, l'immagine sembrerà piuttosto "muta" (i colori avranno molta meno saturazione, il contrasto diminuirà, la nitidezza diminuirà). Vedi questo esempio: l'immagine ha uno spazio colore normale e viene visualizzata con lo spazio colore corretto sulla destra, a sinistra viene visualizzata in uno spazio cromatico ampio, trattando i valori RGB dell'immagine come se appartenessero a quello spazio colore ampio, che in realtà non lo sono, da qui la vivacità esagerata:

enter image description here

Problemi correlati