IWICDevelopRaw のサポート
アプリケーションで RAW 処理をサポートできるようにするために、コーデック作成者は IWICDevelopRaw のすべてのパラメーターを実装することを強くお勧めします。 Windows 7 の場合、Windows Imaging Component (WIC) では、すべての IWICDevelopRaw のサポートが必要になります。 ファイル形式でこれらのパラメーターがすべてサポートされていない場合は、イメージ ファイル形式を変更する必要があります。
アプリケーションで基本的な RAW 処理を有効にするには、コーデックで露出 (ExposureCompensationSupport) と色 (KelvinWhitePointSupport や TintSupport など) の調整をサポートする必要があります。 さらに、特定の色空間とピクセル形式への出力を強くお勧めします。 他の調整のサポートは、もちろん、推奨され、Windows 7 に必要です。
RAW コーデックは、イメージのローテーションと高速プレビューの基本的なサポートを提供する必要があります。 回転は、次の 2 つの異なる方法で指定できます。
- IWICDevelopRaw::SetRotation メソッド。 このメソッドは、 CopyPixels への後続の呼び出しの出力に必要な回転角度を設定します。
- IWICBitmapSourceTransform::CopyPixels メソッド。 呼び出し元は、dstTransform オプションを設定して、目的の回転角度を示すことができます。
これらの 2 つの方法は、次の点で異なります。
- デコーダー オブジェクトのインスタンス間で保持できるのは 、IWICDevelopRaw 設定のみです。
- IWICBitmapSourceTransform::CopyPixels はその 特定の呼び出しにのみ適用されます。いかなる種類の永続性もありません。
- IWICDevelopRaw を使用すると、回転を細かく制御できます。 IWICBitmapSourceTransform::CopyPixels は 90 度の増分に制限されます。
回転が IWICDevelopRaw と IWICBitmapSourceTransform の両方で指定されている場合、回転効果は累積されます。 たとえば、 IWICDevelopRaw で 25 度の回転が指定され、 IWICBitmapSourceTransform で 90 度の回転が指定されている場合、次のことが発生します。
- IWICBitmapFrameDecode::CopyPixels の呼び出しでは、25 度回転 (つまり、IWICDevelopRaw で指定された量のみ) を適用する必要があります。
- dstTransform の量が 90 の IWICBitmapSourceTransform::CopyPixels を呼び出すと、115 度回転 (25 + 90) になります。
- ここでも、 IWICDevelopRaw::SetRotation を使用して指定された 25 度回転のみを保持できます。
Windows Vista では、 IWICBitmapFrameDecode::GetThumbnail メソッドと IWICBitmapDecoder::GetPreview メソッドを使用すると、呼び出し元は、それぞれ埋め込まれたサムネイルとプレビュー イメージを取得できます。 これらは、イメージ ファイル ストリームから事前に計算されたプレビューとサムネイルを返すことを目的としています。 プレビューまたはサムネイルを "オン ザ フライ" に生成すると、Windows エクスプローラー とフォト ビューアーのパフォーマンスが低下します。 コーデックは、ユーザーが処理設定を対話的に制御しているときに、更新された画面解像度イメージをすばやく返す方法も提供する必要があります。
IWICDevelopRaw::SetRenderMode を呼び出すと、IWICBitmapFrameDecode::CopyPixels に対する後続の呼び出しが返されます (速度または品質を優先します)。 さらに、IWICBitmapSourceTransform インターフェイスを使用してダウンサンプリングが必要かどうかを判断し、適用できる場合にパフォーマンスを向上させることができます。 すべての画像の色の忠実度は同等である必要があります。 処理設定に変更が加えられると、これらのレンダリングはすべて変更を反映する必要があります。
関連トピック