5月 262016
 
Pocket

WPF/WinRT の事はこちらへ:
カラーマネジメントシステムの概要 と カラマネプログラミング初歩 – CAT EARS

結論

  • 出来なくはないがちょいと面倒
  • WinRT の頃とさほど変わってない
  • モバイルでも動くようになったのが大きな違い

UWP で使えるコンポーネントのカラマネ対応状況

UWP API C++/CX Win2D SharpDX
モニタプロファイルの取得
埋め込みプロファイルの取得
プロファイルを使った画像の色変換
変換結果の描写

UWP API

  • API 事情は WinRT 時代から変わってない
  • モニタプロファイルの取得はできるものの、 IRandomAccessStream でしかないので単独では役に立たない
  • 描写は出来ても色変換できなければ意味が無い
処理 API
モニタプロファイルの取得 DisplayInformation でできる
埋め込みプロファイルの取得 できない
プロファイルを使った画像の色変換 できない
変換結果の描写 Image コントロールとか

C++/CX

  • こちらも API 事情は WinRT 時代から変わってない
  • だが Windows 10 Mobile でも使えるようになった!
  • CMYK は Direct2D では対応していないので、 WIC で変換するなどの工夫が必要になる
処理 API
モニタプロファイルの取得 DisplayInformation でできる
埋め込みプロファイルの取得 WIC の IWICBitmapFrameDecode でできる
プロファイルを使った画像の色変換 WIC の IWICColorTransform や Direct2D の Color management effect でできる
変換結果の描写 SurfaceImageSource とか WriteableBitmap とかでできる

Win2D

  • これも Mobile で動く!
  • 1.14.0 から ColorManagementEffect が使えるようになった
  • だが Direct2D であるので CMYK には対応していない
  • 1.18.0 時点では埋め込みプロファイルの取得手段がないので、 WIC などを使って自力で取得する必要がある
    • プロファイルの byte[] が取得できれば変換できるようになる
    • CanvasBitmap あたりが対応してくれればいいのに……
処理 API
モニタプロファイルの取得 DisplayInformation でできる
埋め込みプロファイルの取得 できない
プロファイルを使った画像の色変換 ColorManagementEffect でできる
変換結果の描写 CanvasImage コントロールとかでできる

SharpDX

  • 同じく Mobile でも動く!
  • 基本的に C++/CX でやることを C# で書けますというやつなので、 C++/CX でやる場合と同じ
処理 API
モニタプロファイルの取得 DisplayInformation でできる
埋め込みプロファイルの取得 BitmapFrameDecode でできる
プロファイルを使った画像の色変換 ColorTransform でできる
変換結果の描写 WriteableBitmap とかでできる

  2 Responses to “UWP のカラマネ事情”

  1. ぜんぜん関係ない記事にコメント申し訳ないのですが、https://github.com/veigr/EventMapHpViewerの輸送量計算で鬼怒改二の処理が抜けているのでお手すきの際にでも修正していただけると幸いです

Leave a Reply to 匿名 Cancel reply