BitmapEncoder クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
画像の作成、編集、保存を行うメソッドが含まれています。
public ref class BitmapEncoder sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class BitmapEncoder final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class BitmapEncoder
Public NotInheritable Class BitmapEncoder
- 継承
- 属性
Windows の要件
デバイス ファミリ |
Windows 10 (10.0.10240.0 で導入)
|
API contract |
Windows.Foundation.UniversalApiContract (v1.0 で導入)
|
例
エンコーダー オブジェクトを作成する部分的な例を次に示します。 この例では、 Windows.Storage.Pickers.FileSavePicker でファイルを選択したものとします。 ファイルの選択、エンコーダーの作成、イメージのエンコードに関する完全な手順については、「イメージング」を参照してください。
private async void SaveSoftwareBitmapToFile(SoftwareBitmap softwareBitmap, StorageFile outputFile)
{
using (IRandomAccessStream stream = await outputFile.OpenAsync(FileAccessMode.ReadWrite))
{
// Create an encoder with the desired format
BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, stream);
// Set the software bitmap
encoder.SetSoftwareBitmap(softwareBitmap);
// Set additional encoding parameters, if needed
encoder.BitmapTransform.ScaledWidth = 320;
encoder.BitmapTransform.ScaledHeight = 240;
encoder.BitmapTransform.Rotation = Windows.Graphics.Imaging.BitmapRotation.Clockwise90Degrees;
encoder.BitmapTransform.InterpolationMode = BitmapInterpolationMode.Fant;
encoder.IsThumbnailGenerated = true;
try
{
await encoder.FlushAsync();
}
catch (Exception err)
{
const int WINCODEC_ERR_UNSUPPORTEDOPERATION = unchecked((int)0x88982F81);
switch (err.HResult)
{
case WINCODEC_ERR_UNSUPPORTEDOPERATION:
// If the encoder does not support writing a thumbnail, then try again
// but disable thumbnail generation.
encoder.IsThumbnailGenerated = false;
break;
default:
throw;
}
}
if (encoder.IsThumbnailGenerated == false)
{
await encoder.FlushAsync();
}
}
}
注釈
イメージ形式
BitmapEncoder では、次の形式をエンコードできます。
- JPEG
- PNG
- GIF
- TIFF
- BMP
- JPEG-XR
デコード形式の一覧については、「 BitmapDecoder 」トピックを参照してください。
BitmapEncoder は、イメージ内のフレームにランダムにアクセスできないという点で 、BitmapDecoder とは異なる動作をします。 代わりに、エンコーダーに対して特定の順序でアクションを実行する必要があります。
BitmapEncoder を作成すると、コンテナーと最初のフレーム上のデータへのアクセスが提供されます。 最初のフレームとコンテナーでデータの設定が完了したら、追加のフレームをエンコードしない場合は、 FlushAsync を呼び出してエンコード操作を完了します。
追加のフレームをエンコードする場合は、 GoToNextFrameAsync を呼び出します。 これにより、コンテナー内のデータと最初のフレームがコミットされるため、編集できなくなります。 この時点でエンコーダーに対して実行するアクションは、2 番目のフレームに影響します。 各フレームの処理が完了したら、 GoToNextFrameAsync を呼び出して新しいフレームをコミットして追加するか、 FlushAsync を呼び出して終了できます。ビットマップ エンコーダーは、エンコードされた出力ファイルの品質、サイズ、その他のプロパティに影響を与えるさまざまなエンコード オプションを公開する場合があります。 詳細については、「 イメージング」を参照してください。
バージョン履歴
Windows のバージョン | SDK バージョン | 追加された値 |
---|---|---|
1809 | 17763 | HeifEncoderId |
プロパティ
BitmapContainerProperties |
コンテナーのメタデータです。 |
BitmapProperties |
選択したフレームのメタデータ。 |
BitmapTransform |
フレーム ビットマップの変換方法を指定するために使用される BitmapTransform オブジェクト。 |
BmpEncoderId |
組み込みの BMP エンコーダーの一意識別子。 |
EncoderInformation |
ビットマップ エンコーダーに関する情報。 |
GeneratedThumbnailHeight |
生成されたサムネイルの高さ (ピクセル単位)。 |
GeneratedThumbnailWidth |
生成されたサムネイルの幅 (ピクセル単位)。 |
GifEncoderId |
組み込みの GIF エンコーダーの一意識別子。 |
HeifEncoderId |
組み込みの HEIF エンコーダーの一意識別子。 |
IsThumbnailGenerated |
新しいサムネイルが自動的に生成されるかどうかを示します。 |
JpegEncoderId |
組み込みの JPEG エンコーダーの一意識別子。 |
JpegXREncoderId |
組み込みの JPEG-XR エンコーダーの一意識別子。 |
PngEncoderId |
組み込みの PNG エンコーダーの一意識別子。 |
TiffEncoderId |
組み込みの TIFF エンコーダーの一意識別子。 |