WIC の新機能
Windows Imaging Component (WIC) は、Windows の新しいリリースで更新されました。 このトピックでは、これらの新機能の概要について説明します。
Windows 10 バージョン 1507 の新機能
WIC デコードとエンコードのための低レベル JPEG データへのアクセス
バージョン 1507 Windows 10以降、WIC は Huffman や量子化テーブルなどの低レベルの JPEG データ構造にアクセスできます。 詳細については、次のトピックを参照してください。
- IWICJpegFrameDecode インターフェイス
- IWICJpegFrameEncode インターフェイス
JPEG インデックス作成
JPEG インデックス作成は、大きな JPEG 画像の小さなサブ領域にランダムにアクセスするパフォーマンスを大幅に向上させる手法であり、追加のメモリ使用量が発生します。 JPEG インデックス作成は、WIC の任意の呼び出し元によって利用できます。
ID2D1ImageSourceFromWic インターフェイスは、JPEG インデックスを有効にした場合に利用するように設計されています。 たとえば、ID2D1ImageSource API は、大きな解像度の画像のパンやズームなどのシナリオで、イメージの必要なセクションのみを要求します。 詳細については、次のトピックを参照してください。
- IWICJpegFrameDecode::SetIndexing メソッド
- ID2D1ImageSourceFromWic インターフェイス
Windows 8.1の新機能
JPEG YCbCr イメージのサポート
WINDOWS 8.1以降、WIC は JPEG Y'CbCr イメージ データをネイティブ形式でデコード、変換、エンコードするためのサポートを提供します。 これにより、アプリは、Y'CbCr でエンコードされた JPEG を操作するときに、特定のイメージング操作の処理時間とメモリ消費量を大幅に削減できます。 詳細については、次のトピックを参照してください。
- Direct2DYCbCr 効果
- IWICPlanarBitmapSourceTransform インターフェイス
- IWICPlanarBitmapFrameEncode インターフェイス
ブロック圧縮形式 (DDS ファイル) のサポート
WINDOWS 8.1以降、WIC は、DXGI_FORMAT_BC1_UNORM、DXGI_FORMAT_BC2_UNORM、DXGI_FORMAT_BC3_UNORMの形式でエンコードされた DDS イメージをサポートする新しいコーデックを追加します。 DDS ブロック圧縮データには、標準 WIC インターフェイスを使用してデコードされた形式でアクセスすることも、新しい DDS 固有のインターフェイスを使用して直接アクセスすることもできます。 詳細については、次のトピックを参照してください。
- IWICDdsDecoder インターフェイス
- IWICDdsEncoder インターフェイス
Windows 8の新機能
Windows 8では、WIC はいくつかの新機能で更新されました。 WIC の更新版は、Windows 7 プラットフォーム 更新プログラム (Windows 7 用プラットフォーム更新プログラム) を介して Windows 7 および Windows Server 2008 R2 でも利用できます。
Direct2D 統合の改善
Windows 8の WIC には、WIC との Direct2D 統合を向上させるための次の API が用意されています。
- IWICImageEncoder - Direct2DID2D1Image コンテンツを IWICBitmapFrameEncode にエンコードできる新しいインターフェイス。 このインターフェイスのメソッドは、エンコードを制御するためのパラメーターである WICImageParameters へのポインターを受け取ります。
- IWICImagingFactory2 - CreateImageEncoder メソッドを使用した新しい WIC ファクトリ。 このインターフェイスは、元の WIC ファクトリ である IWICImagingFactory から継承され、同じ方法で作成されます。
BMP コーデックアルファのサポートに対する変更
Windows 8の WIC では、BITMAPV5HEADER イメージ ファイルを WICPixelFormat32bppBGRA 形式のイメージとして読み込むことができます。 さらに、BMP エンコーダーでは、新しいブール値 、エンコーダー オプション "EnableV5Header32bppBGRA" がサポートされています。このオプションは、エンコーダーに 32bppBGRA イメージ データを含む BITMAPV5HEADER を書き込むよう指示します。
BMP 形式の詳細については、「 BMP 形式の概要」を参照してください。
新しいピクセル形式
Windows 8の WIC では、次の新しいピクセル形式が定義されています。
- GUID_WICPixelFormat32bppRGB
- GUID_WICPixelFormat64bppRGB
- GUID_WICPixelFormat96bppRGBFloat
- GUID_WICPixelFormat64bppPRGBAHalf
注意
TIFF 組み込みコーデックは、GUID_WICPixelFormat96bppRGBFloatデータを返します。 他の 3 つの形式は、組み込みのコーデックでは使用されません。
AppContainer でのコンポーネントの拡張性に関する制限事項
すべての Windows ストア アプリを含む AppContainer プロセスで実行する場合、WIC では、システムに追加のコンポーネントがインストールされているかどうかに関係なく、Windows が提供するコンポーネントのみが使用されます。 AppContainer で実行されていないアプリは影響を受けません。
アプリは AppContainger で実行するためにコード変更を行う必要はありませんが、 WICComponentEnumerateOptions フラグとベンダー GUID パラメーターは無効です。 WIC は、Windows 提供のコーデックでデコードできない場合、イメージの読み込みに失敗し、 CreateComponentEnumerator メソッドを呼び出すと、Windows で提供されるコンポーネントのみが返されます。
CLSID_WICPngDecoderと PNG デコーダーの色コンテキストのサポートに対する変更
CLSID_WICPngDecoder と同じ GUID で CLSID_WICPngDecoder1が追加され、 CLSID_WICPngDecoder2 が追加されました。
Windows 8 SDK に対してコンパイルすると、新しい PNG デコーダー動作を使用して新しくコンパイルされたアプリを昇格CLSID_WICPngDecoder2 CLSID_WICPngDecoderが#definedされます。 アプリは引き続き CLSID_WICPngDecoderを指定する必要があります。
CLSID_WICPngDecoder2指定すると、cHRM と gAMA チャンクから IWICColorContext を生成する WIC PNG デコーダーのバージョンが作成されます。 これにより、ソース イメージを色管理するために、この色空間メタデータを他の Windows API と共に使用できます。 iCCP チャンクが存在する場合、sRGB チャンクが存在する場合、または gAMA および cHRM チャンクが sRGB 色空間を示している場合、 iWICColorContext は gAMA および cHRM チャンクから生成されません。
アプリでは 、CLSID_WICPngDecoder1 を指定して、gAMA および cHRM チャンクから IWICColorContext を生成しない WIC PNG デコーダーのバージョンを作成できます。 これは、以前のバージョンの Windows での PNG デコーダーの動作と一致します。
WINCODEC_SDK_VERSIONに対する変更
Windows 8 SDK に対してコンパイルすると、新しい PNG デコーダー動作を使用して新しくコンパイルされたアプリを昇格WINCODEC_SDK_VERSION2 WINCODEC_SDK_VERSIONが#definedされます。 それ以外の場合は、WINCODEC_SDK_VERSION1に #defined。 アプリは引き続き WINCODEC_SDK_VERSIONを指定する必要があります。
WICCreateImagingFactory_Proxyを呼び出してイメージング ファクトリを作成するときにWINCODEC_SDK_VERSIONを指定すると、CreateDecoder メソッドとそのバリアントからCLSID_WICPngDecoder1するのではなく、CLSID_WICPngDecoder2が作成されます。 また、デコーダー コンポーネント情報列挙子はコンポーネント情報 CLSID_WICPngDecoder2 返しますが、 CLSID_WICPngDecoder1 情報は返しません。
WINCODEC_SDK_VERSION1を指定すると、上記の場合、CLSID_WICPngDecoder2ではなくCLSID_WICPngDecoder1が使用されます。
CLSID_WICImagingFactoryに対する変更
CLSID_WICImagingFactory と同じ GUID で CLSID_WICImagingFactory1が追加され、 CLSID_WICImagingFactory2 が追加されました。
Windows 8 SDK に対してコンパイルすると、CLSID_WICImagingFactoryは新しい PNG デコーダー動作を使用して新しくコンパイルされたアプリを昇格させるためにCLSID_WICImagingFactory2に#definedされます。 アプリは引き続き CLSID_WICImagingFactoryを指定する必要があります。
CoCreateInstance を呼び出してイメージング ファクトリを作成するときにCLSID_WICImagingFactory2を指定すると、CreateDecoder メソッドとそのバリアントからCLSID_WICPngDecoder1するのではなく、CLSID_WICPngDecoder2が作成されます。 また、デコーダー コンポーネント情報列挙子はコンポーネント情報 CLSID_WICPngDecoder2 返しますが、 CLSID_WICPngDecoder1 情報は返しません。
CLSID_WICImagingFactory1を指定すると、上記の場合、CLSID_WICPngDecoder2ではなくCLSID_WICPngDecoder1が使用されます。
Windows 7 の新機能
Windows 7 では、WIC はいくつかの新機能で更新されました。 このトピックでは、これらの新機能の概要について説明します。
TIFF コーデックへの更新
WIC TIFF コーデックは、以前のバージョンの WIC でサポートされていないいくつかの機能をサポートするように Windows 7 用に更新されました。
- 大きな TIFF ファイルのサポート。
- タイル化された TIFF 画像をデコードします。
- フラット (平面) TIFF 画像をデコードします。
- JPEG でエンコードされた TIFF 画像をデコードします。
プログレッシブ デコード
プログレッシブ デコードを使用すると、イメージ全体のダウンロードが完了する前に、イメージの一部を段階的にデコードおよびレンダリングできます。 この機能により、インターネットから画像を表示するときのユーザー エクスペリエンスが大幅に向上します。これは、デコードを開始する前にイメージ全体がダウンロードされるのを待つ必要がないためです。 プログレッシブ デコードを使用すると、ユーザーはイメージ全体がダウンロードされるずっと前に、使用可能なデータを含むイメージ プレビューを表示できます。 この機能は、インターネットまたは帯域幅が限られたデータ ソースから画像を表示するために使用されるすべてのアプリケーションに不可欠です。
詳細については、「 プログレッシブ デコードの概要」を参照してください。
JPEG、PNG、GIF の拡張メタデータのサポート
Windows 7 では、WIC は JPEG、PNG、GIF イメージのメタデータ サポートを拡張しました。
- アニメーション GIF および GIF プロパティのサポートが追加されました。
- クロム、輝度、コメントのメタデータをサポートするように JPG メタデータ ハンドラーを拡張しました。
- tIME、sRGB、iCCP、hIST、cHRM、iTXt、bKGD、gAMA メタデータをサポートするように PNG メタデータ ハンドラーを拡張しました。
- ResolutionInfo メタデータと IPTC ダイジェスト メタデータ用の新しい 8BIM メタデータ ハンドラーが追加されました。
- 論理画面記述子 (LSD)、イメージ記述子 (IMD)、グラフィック コントロール拡張機能 (GCE)、およびアプリケーション拡張機能 (APE) メタデータの新しいメタデータ ハンドラーが追加されました。
- APPn ブロックにまたがるメタデータのサポート。
マルチスレッド アパートメントのサポート
マルチスレッド アパートメント (MTA) 内のオブジェクトは、MTA 内の任意の数のスレッドによって同時に呼び出され、マルチコア システムや特定のサーバー シナリオでのパフォーマンスを向上させることができます。 さらに、MTA 内に存在する WIC コーデックは、異なる STA アパートメントに存在するスレッド間の呼び出しに関連するマーシャリング コストなしで、MTA 内に存在する他のオブジェクトを呼び出すことができます。 Windows 7 では、JPEG、TIFF、PNG、GIF、ICO、BMP など、MTA をサポートするために、すべてのインボックス WIC コーデックが更新されています。 MTA をサポートするようにコーデックを記述することを強くお勧めします。 MTA をサポートしていないコーデックでは、マーシャリングによってマルチスレッド アプリケーションでパフォーマンスが大幅に低下します。 MTA サポートを有効にするには、コーデックに適切な同期を実装する必要があります。 これらの同期手法の正確な実装は、このペーパーの範囲外です。 コンポーネント オブジェクト モデル (COM) オブジェクトの同期に関する一般的なリファレンスを以下に示します。
メタデータワーキンググループの実装
現在、これらのメタデータ形式を読み書きするための一貫した方法に関する明確な業界標準やガイダンスなしで、重複するプロパティを含むさまざまなメタデータ ストレージ形式があります。 このさまざまな形式とプロパティに役立つメタデータ作業グループ (MWG) が形成されました。 MWG の目的は、さまざまなプラットフォーム、アプリケーション、デバイス間の相互運用性を確保するガイドラインを提供することです。 MWG によって確立されたガイドラインは、XMP、Exif、IPTC の各メタデータ フィールドと、JPEG、TIFF、PSD の画像形式に適用されます。
Windows 7 では、写真メタデータ ハンドラーとメタデータ ポリシー レイヤーが更新され、MWG によって確立されたガイドラインに従って画像メタデータの読み取りと書き込みが行われています。 メタデータ作業グループ (MWG) の詳細については、 確立されたメタデータ ガイドラインを参照してください。
Windows Vista および Windows Server 2008 でサポートされている Windows 7 の機能
Windows Vista 用プラットフォーム更新プログラムは、開発者が Windows 7 と Windows Vista の両方にアプリケーションをターゲットにできるようにする一連のランタイム ライブラリです。 Windows Server 2008 のプラットフォーム更新プログラムは、開発者が Windows Server 2008 R2 と Windows Server 2008 の両方にアプリケーションをターゲットにできるようにする一連のランタイム ライブラリです。 Windows Vista 用プラットフォーム更新プログラムと Windows Server 2008 用プラットフォーム更新プログラムは、Windows Updateを通じてすべての Windows Vista および Windows Server 2008 のお客様が利用できるようになります。 Windows Vista 用プラットフォーム更新プログラムまたは Windows Server 2008 用プラットフォーム更新プログラムを必要とするサード パーティ製アプリケーションでは、必要な更新プログラムがインストールされているかどうかを検出Windows Update。インストールされていない場合、Windows Updateはバックグラウンドでダウンロードしてインストールします。 両方の更新プログラムの詳細については、「Windows Vista 用プラットフォーム更新プログラム」を参照してください。