Partage via


BitmapEncoder Classe

Définition

Contient des méthodes pour créer, modifier et enregistrer des images.

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
Héritage
Object Platform::Object IInspectable BitmapEncoder
Attributs

Configuration requise pour Windows

Famille d’appareils
Windows 10 (introduit dans 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduit dans v1.0)

Exemples

Voici un exemple partiel de création d’un objet encodeur. Cet exemple suppose que vous avez sélectionné un fichier avec Windows.Storage.Pickers.FileSavePicker. Pour obtenir des instructions complètes sur la sélection d’un fichier, la création d’un encodeur et l’encodage d’une image, consultez Création d’images

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();
        }


    }
}

Remarques

Formats d’images

BitmapEncoder peut encoder les formats suivants.

  • JPEG
  • PNG
  • GIF
  • TIFF
  • BMP
  • JPEG-XR

Pour obtenir la liste des formats de décodage, consultez la rubrique BitmapDecoder .

BitmapEncoder se comporte différemment de BitmapDecoder en ce qu’il ne fournit pas d’accès aléatoire aux images d’une image. Au lieu de cela, vous devez effectuer des actions sur l’encodeur dans un ordre spécifique.

Lorsque vous créez un BitmapEncoder, il fournit l’accès aux données du conteneur et de la première image. Lorsque vous avez terminé de définir les données sur la première image et le premier conteneur, si vous ne souhaitez pas encoder d’images supplémentaires, appelez FlushAsync pour terminer l’opération d’encodage.

Si vous souhaitez encoder une trame supplémentaire, appelez GoToNextFrameAsync. Cela valide les données dans le conteneur et la première image afin que vous ne puissiez plus les modifier. À ce stade, toutes les actions que vous effectuez sur l’encodeur affecteront la deuxième image. Une fois que vous avez terminé avec chaque image, vous pouvez appeler GoToNextFrameAsync pour valider et ajouter une nouvelle image, ou appeler FlushAsync pour terminer. Les encodeurs bitmap peuvent exposer différentes options d’encodage qui affectent la qualité, la taille et d’autres propriétés du fichier de sortie encodé. Pour plus d’informations, consultez Imagerie.

Historique des versions

Version de Windows Version du SDK Valeur ajoutée
1809 17763 HeifEncoderId

Propriétés

BitmapContainerProperties

Métadonnées du conteneur.

BitmapProperties

Métadonnées du cadre sélectionné.

BitmapTransform

Objet BitmapTransform utilisé pour spécifier la façon dont l’image bitmap doit être transformée.

BmpEncoderId

Identificateur unique de l’encodeur BMP intégré.

EncoderInformation

Informations sur l’encodeur bitmap.

GeneratedThumbnailHeight

Hauteur, en pixels, de toute miniature générée.

GeneratedThumbnailWidth

Largeur, en pixels, de toute miniature générée.

GifEncoderId

Identificateur unique de l’encodeur GIF intégré.

HeifEncoderId

Identificateur unique de l’encodeur HEIF intégré.

IsThumbnailGenerated

Indique si une nouvelle miniature est générée automatiquement.

JpegEncoderId

Identificateur unique de l’encodeur JPEG intégré.

JpegXREncoderId

Identificateur unique de l’encodeur JPEG-XR intégré.

PngEncoderId

Identificateur unique de l’encodeur PNG intégré.

TiffEncoderId

Identificateur unique de l’encodeur TIFF intégré.

Méthodes

CreateAsync(Guid, IRandomAccessStream)

Crée de manière asynchrone un nouveau BitmapEncoder.

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

Crée de manière asynchrone un nouveau BitmapEncoder pour le codec spécifié avec les options d’encodage spécifiées et l’initialise sur un flux.

CreateForInPlacePropertyEncodingAsync(BitmapDecoder)

Crée de manière asynchrone un nouveau BitmapEncoder pour la modification des métadonnées et des propriétés sur place. Le nouvel encodeur peut uniquement modifier les propriétés bitmap sur place et échouera pour toute autre utilisation.

CreateForTranscodingAsync(IRandomAccessStream, BitmapDecoder)

Crée de manière asynchrone un nouveau BitmapEncoder et l’initialise à l’aide des données d’un BitmapDecoder existant.

FlushAsync()

Valide et vide de manière asynchrone toutes les données d’image.

GetEncoderInformationEnumerator()

Liste des encodeurs bitmap installés sur le système et informations les concernant.

GoToNextFrameAsync()

Valide de manière asynchrone les données d’image actuelles et ajoute un nouveau cadre vide à modifier.

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

Valide de manière asynchrone les données d’image actuelles et ajoute une nouvelle image vide, avec les options d’encodage spécifiées, à modifier.

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

Définit les données de pixels sur le cadre.

SetSoftwareBitmap(SoftwareBitmap)

Définit les données d’image de l’image actuelle à l’aide du SoftwareBitmap spécifié.

S’applique à

Voir aussi