BitmapEncoder クラス

定義

画像の作成、編集、保存を行うメソッドが含まれています。

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
継承
Object Platform::Object IInspectable 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 エンコーダーの一意識別子。

メソッド

CreateAsync(Guid, IRandomAccessStream)

新しい BitmapEncoder を非同期に作成します。

CreateAsync(Guid, IRandomAccessStream, IIterable<KeyValuePair<String,BitmapTypedValue>>)

指定したエンコード オプションを使用して、指定したコーデックの新しい BitmapEncoder を非同期に作成し、ストリームで初期化します。

CreateForInPlacePropertyEncodingAsync(BitmapDecoder)

インプレース プロパティとメタデータ編集用の新しい BitmapEncoder を非同期に作成します。 新しいエンコーダーでは、ビットマップ プロパティをインプレースでのみ編集でき、他の用途では失敗します。

CreateForTranscodingAsync(IRandomAccessStream, BitmapDecoder)

新しい BitmapEncoder を非同期に作成し、既存の BitmapDecoder のデータを使用して初期化します。

FlushAsync()

すべてのイメージ データを非同期にコミットしてフラッシュします。

GetEncoderInformationEnumerator()

システムにインストールされているビットマップ エンコーダーの一覧とそれらに関する情報。

GoToNextFrameAsync()

現在のフレーム データを非同期にコミットし、編集する新しい空のフレームを追加します。

GoToNextFrameAsync(IIterable<KeyValuePair<String,BitmapTypedValue>>)

現在のフレーム データを非同期にコミットし、新しい空のフレームを追加し、指定したエンコード オプションを使用して編集します。

SetPixelData(BitmapPixelFormat, BitmapAlphaMode, UInt32, UInt32, Double, Double, Byte[])

フレーム上のピクセル データを設定します。

SetSoftwareBitmap(SoftwareBitmap)

指定した SoftwareBitmap を使用して、現在のフレームのイメージ データを設定します。

適用対象

こちらもご覧ください