9

NSColorを作成するための便利なクラスメソッドがいくつかあります。ただし、以下のさまざまなクラスメソッドをいつ使用するかを特定できないようです。

colorWithSRGBRed:green:blue:alpha:colorWithDeviceRed:green:blue:alpha:colorWithCalibratedRed:green:blue:alpha:

4

2 に答える 2

11

tl;drキャリブレーションされた色空間を使用します。

ドキュメントを逆流させるのではなく、答えはカラープログラミングのトピックにあります

また、色空間の概要

ここに画像の説明を入力してください

追加するために編集

sRGBは、名前付きの色空間の1つです。

ここに画像の説明を入力してください

最後に-これがドキュメントの最後の画像です。これがあなたの質問に答えてくれることを願っています-色空間を使用したい場合は、キャリブレーションされたものを使用してください。

ここに画像の説明を入力してください

于 2012-09-24T15:50:29.670 に答える
9

RGB 値のセットは実際には色を表していません。グラフィックス アダプターに、その色に必要な赤、緑、青の光の割合を伝えるだけですが、50% 純粋な赤のような色は、次の 2 つの理由ですべてのモニターで同じ色ではありません。

  1. 50% は、ガンマ曲線がわずかに異なるため、すべてのモニターで同じ相対的な明るさではありません(バックライトの明るさが異なるため、絶対的な明るさは同じではありませんが、実際には無関係です - 相対的な値のみが重要です)。

  2. バックライトの色とカラー フィルターに応じて、モニターの赤の "色合い" が異なるため、100% の赤でも同じ赤のトーンではありません。

そのため、RGB の同じ組み合わせでも、モニターによっては異なって見える場合があります。お使いのモニターではきれいなオレンジ色ですが、モニターによっては非常に明るい赤に見えたり、濃い黄色に見えたりすることがあります。どこでも同じ RGB 値ですが、同じ色ではありません。

RGB に「色」を記述するには、RGB 値がその空間への座標のような色の空間を定義する色空間も必要とし、正確な色を記述します。

ここに画像の説明を入力 (元のアップロード者は英語版ウィキペディアの Cpesacreta でした - aboalbiss によって en.wikipedia から Commons に転送されました。 )

を使用するcolorWithDeviceRed:green:blue:alpha:と、RGB 値は変換されず、グラフィック アダプタにこのように正確に報告されます。したがって、色は実際にはこれらの RGB 値を持ちますが、ユーザーが画面に表示する結果は画面ごとに異なります。

を使用するcolorWithSRGBRed:green:blue:alpha:と、RGB 値は sRGB 色空間の RGB 値として解釈されます。システムはそのスペースを認識しているため、ここにどの色が記述されているかを認識しています。システムがモニターのカラー スペースも認識している場合 (たとえば、工場で、またはユーザーがキャリブレーション ツールを使用してキャリブレーションを行っているため)、RGB 値を sRGB カラー スペースからモニターのネイティブ カラー スペースに変換できます。モニター。この変換により、モニターへの途中で絶対 RGB 値が変更されます。使用したことがあるかもしれませんが#758299、モニターは実際に表示されます#7483A1が、それは色#7483A1が sRGB 色とまったく同じように見えるためです。#758299このディスプレイでは、ユーザーには期待される正しい色が表示されます (RGB 値が同じではない場合でも、ユーザーには RGB 値は表示されず、色が表示されます)。

sRGB は非常に人気のある色空間であり、最も互換性のある色空間であり、ほとんどのグラフィック アプリとシステムがそれを認識しており、最新のディスプレイはすべて既存の sRGB 色のほとんどすべてを正しく表示できると期待できます。しかし、それは非常に限られた色空間でもあります。sRGB は、現在ほとんどのデバイスが表示できるすべての色のサブセットにすぎず、1,670 万の異なる色も提供していません (考えられる RGB の組み合わせは非常に多くありますが)。そのため、すべての Adob​​e グラフィック アプリで見られる Adob​​e の色空間のような、より広い色空間が存在します。Apple は、「調整された色空間」という名前の色空間を提供しています。これは、「一般的な色空間」とも呼ばれます。あなたはそれを使用しますcolorWithCalibratedRed:green:blue:alpha:ドキュメントで見つけることができるものから、これは基本的にHSB色空間であり、sRGBよりも広いです(内部的には色を異なる形式で保存しますが、RBGをHSBに変換し、HSBを元に戻すための固定されたデバイスニュートラルな式がありますRGBに)。

そのため、色の正確性が重要な場合 (ユーザーは、それを実現するために必要な RGB 値に関係なく、画面上で見ているのと同じ色を見る必要があります)、常に色を色空間と組み合わせて指定する必要があります。sRGB を使用するか Generic/Calibrated を使用するかは関係ありません。アプリ全体で同じものを使用してください。

sRGB で色を報告するツールを使用する場合、16 進値はそのスペースにのみ一致します。すべての Web 標準は暗黙的に sRGB カラーを使用することに注意してください。したがって、HTML または CSS ファイルで 16 進数の色を使用すると、それらは常に sRGB 値として解釈されます。また、外部ソースから色を受け取り、このソースがそれらが属する色空間を教えてくれない場合は、常に sRGB を想定するのが最も安全です。

Digital Color Meterアプリ (常に MacOS に付属)のカラー ピッカーを使用して画面から色を読み取る場合は、必ず[一般的な RGB で表示]または[ sRGB で表示] を選択してください。これらの値をアプリまたは Web サイトに表示します。ネイティブ値は、システムがその色を表示するために実際に使用するものにすぎませんが、この組み合わせはシステム上でそのように見えるだけです。

もちろん、ディスプレイが正しく調整されていない場合、これは機能しません。最新のディスプレイには、コンピューターがダウンロードできるキャリブレーション プロファイルが埋め込まれており、モバイル デバイスのキャリブレーションもデバイスに保存されています。古いモニターを使用している場合、またはプロファイルが正確でないと思われる場合 (またはディスプレイの経年劣化により正確でなくなった場合)、ディスプレイ キャリブレーション ハードウェアを入手し、DisplayCALなどのツールを使用してより適切なプロファイルを生成する必要があります (無料、オープンソース、すべての主要なプラットフォーム、幅広い USB ハードウェアをサポート)

よくある質問は、間違った色空間に従って RGB 値を解釈すると、実際にはどうなるかということです。まあ、それは完全に間違っているようには見えません。小さい色空間の画像を大きな色空間の画像のように表示すると、その画像は非常に「鮮やか」に見えます (すべての色に多くの彩度があり、コントラストが強調され、鮮明さが強調されます)。逆に言えば、画像はかなり「ミュート」に見えます (色の彩度が大幅に低下し、コントラストが低下し、鮮明さが低下します)。次の例を参照してください: 画像は通常の色空間を持ち、右側には正しい色空間で表示され、左側には広い色空間で表示され、画像の RGB 値をその広い色空間に属しているかのように扱います。実際にはそうではないため、誇張された活気があります。

ここに画像の説明を入力

于 2016-04-27T11:01:24.337 に答える