Condividi tramite


BitmapEncoder Classe

Definizione

Contiene metodi per creare, modificare e salvare immagini.

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
Ereditarietà
Object Platform::Object IInspectable BitmapEncoder
Attributi

Requisiti Windows

Famiglia di dispositivi
Windows 10 (è stato introdotto in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)

Esempio

Ecco un esempio parziale di creazione di un oggetto codificatore. In questo esempio si presuppone che sia stato selezionato un file con Windows.Storage.Pickers.FileSavePicker. Per istruzioni complete sulla selezione di un file, sulla creazione di un codificatore e sulla codifica di un'immagine, vedere Creazione di immagini

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


    }
}

Commenti

Formati di immagine

BitmapEncoder può codificare i formati seguenti.

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

Per un elenco dei formati di decodifica, vedere l'argomento BitmapDecoder .

BitmapEncoder si comporta in modo diverso da BitmapDecoder in quanto non fornisce l'accesso casuale ai fotogrammi in un'immagine. È invece necessario eseguire azioni sul codificatore in un ordine specifico.

Quando si crea un bitmapEncoder, fornisce l'accesso ai dati nel contenitore e al primo fotogramma. Al termine dell'impostazione dei dati nel primo frame e nel contenitore, se non si vogliono codificare fotogrammi aggiuntivi, chiamare FlushAsync per completare l'operazione di codifica.

Per codificare un frame aggiuntivo, chiamare GoToNextFrameAsync. In questo modo i dati vengono confermati nel contenitore e nel primo frame, in modo da non poterli modificare più. A questo punto, tutte le azioni eseguite sul codificatore avranno effetto sul secondo fotogramma. Al termine di ogni fotogramma, è possibile chiamare GoToNextFrameAsync per eseguire il commit e accodare un nuovo frame oppure chiamare FlushAsync per terminare. I codificatori bitmap possono esporre varie opzioni di codifica che influiscono sulla qualità, le dimensioni e altre proprietà del file di output codificato. Per altre info, vedi Imaging.

Cronologia delle versioni

Versione di Windows Versione dell'SDK Valore aggiunto
1809 17763 HeifEncoderId

Proprietà

BitmapContainerProperties

Metadati del contenitore.

BitmapProperties

Metadati per il frame selezionato.

BitmapTransform

Oggetto BitmapTransform utilizzato per specificare la modalità di trasformazione della bitmap del fotogramma.

BmpEncoderId

Identificatore univoco del codificatore BMP predefinito.

EncoderInformation

Informazioni sul codificatore bitmap.

GeneratedThumbnailHeight

Altezza, in pixel, di qualsiasi anteprima generata.

GeneratedThumbnailWidth

Larghezza, in pixel, di qualsiasi anteprima generata.

GifEncoderId

Identificatore univoco del codificatore GIF predefinito.

HeifEncoderId

Identificatore univoco del codificatore HEIF predefinito.

IsThumbnailGenerated

Indica se viene generata automaticamente una nuova anteprima.

JpegEncoderId

Identificatore univoco del codificatore JPEG predefinito.

JpegXREncoderId

Identificatore univoco del codificatore JPEG-XR predefinito.

PngEncoderId

Identificatore univoco del codificatore PNG predefinito.

TiffEncoderId

Identificatore univoco del codificatore TIFF predefinito.

Metodi

CreateAsync(Guid, IRandomAccessStream)

Crea in modo asincrono un nuovo BitmapEncoder.

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

Crea in modo asincrono un nuovo BitmapEncoder per il codec specificato con le opzioni di codifica specificate e lo inizializza in un flusso.

CreateForInPlacePropertyEncodingAsync(BitmapDecoder)

Crea in modo asincrono un nuovo BitmapEncoder per la modifica di metadati e proprietà sul posto. Il nuovo codificatore può modificare solo le proprietà bitmap sul posto e avrà esito negativo per qualsiasi altro utilizzo.

CreateForTranscodingAsync(IRandomAccessStream, BitmapDecoder)

Crea in modo asincrono un nuovo BitmapEncoder e lo inizializza usando i dati di un BitmapDecoder esistente.

FlushAsync()

Esegue il commit asincrono e scarica tutti i dati dell'immagine.

GetEncoderInformationEnumerator()

Elenco dei codificatori bitmap installati nel sistema e informazioni su di essi.

GoToNextFrameAsync()

Esegue il commit asincrono dei dati del frame corrente e aggiunge un nuovo frame vuoto da modificare.

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

Esegue il commit asincrono dei dati del frame corrente e aggiunge un nuovo frame vuoto, con le opzioni di codifica specificate, da modificare.

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

Imposta i dati in pixel sul frame.

SetSoftwareBitmap(SoftwareBitmap)

Imposta i dati dell'immagine del frame corrente usando l'oggetto SoftwareBitmap specificato.

Si applica a

Vedi anche