タグ

ブックマーク / espresso3389.hatenablog.com (4)

  • 2008-06-28

    Windows Imaging Component (WIC)は、.NET Framework 3.0でも利用されている画像処理のフレームワークで、Vistaでは標準インストールされており、Windows フォトギャラリーなどでも利用されているほか、Windows XPでも、.NET Framework 3.5をインストールしたり、または、WICを直接インストールしたり、あるいは、Windows Live フォトギャラリーをインストールしたりすることによって利用できるようになる。 また、Windows Imaging Componentは、サードパーティによって拡張可能なように設計されており、実際、カメラメーカーからは、RAW画像用のコーデックが公開されていたりもするため、今後、画像処理のコードを書くに当たっては、是非とも利用を検討したいフレームワークだ。 C++からだと、GDI+を使って

    2008-06-28
  • カラーマネジメント - espresso3389の日記

    WICでは、カラーマネジメントシステム(CMS)の利用もかなり簡単になっており、これらは、IWICColorTransformを利用して行う。また、上記のサンプルで、IWICBitmapFrameDecodeがIWICBitmapSourceにキャスト(QueryInterface)可能だったように、IWICColorTransformもIWICBitmapSourceにキャスト可能である。これによって、入力画像に複数の加工を加えて最終出力を得ることができるようになっている。 次の例は、読み込んだ形式がどんな形式であれ、sRGBに変換するコード。ただし、元画像にはカラープロファイルがついていることが前提*1。 UINT ret; // 入力側のカラープロファイルを取得 CComPtr<IWICColorContext> srcCc; frameDecode->GetColorContext

    カラーマネジメント - espresso3389の日記
  • 既存のIWICBitmapSourceからの構築 - espresso3389の日記

    すでにWICでメモリ上に持っているIWICBitmapSourceをコピーしてビットマップを初期化したい場合には、次のようなコードを書く必要があるかもしれません。エラーの処理は適当に追加してください。 // 適当に例外を投げるためのマクロ; 手抜きなので注意!!! #define throwOnFail(expr) do { HRESULT hr = expr; if(FAILED(hr)) throw hr; } while(0) // 入力ソースをBGR(プロファイルがある場合には、sRGB)に変換 IWICBitmapSource* ConvertToSRGB(IWICBitmapSource* bmpSrc, IWICImagingFactory* factory) { WICPixelFormatGUID fmt; throwOnFail(bmpSrc->GetPixelForm

    既存のIWICBitmapSourceからの構築 - espresso3389の日記
  • WICでEXIFを考慮したプロファイル読み込みを行う - espresso3389の日記

    JPEGやTIFFから画像を読み込むにあたって、プロファイルが付与されている場合の処理は、カラーマネジメントや、既存のIWICBitmapSourceからの構築のように処理すれば良い部分はあるのだが、一方で、EXIFでは、プロファイルを付与せずにカラースペース指定を行う方法があります。これは、プロファイルを付与して画像ファイルが大きくなることを回避するための仕様ではありますが、WICでは、この指定を自動的に反映してくれたりはしません。 そのため、この仕様に対応するには、自前で、EXIF ColorSpace (40961)を確認してあげる必要があります。また、このリンク先では、1=sRGBとしか書いてありませんが、これは、EXIFの仕様が古いためで、最新の規格では、2=Adobe RGBも定義されています。 で、この値を取得するには、IWICBitmapFrameDecode::GetMe

    WICでEXIFを考慮したプロファイル読み込みを行う - espresso3389の日記
  • 1