BitmapEncoder Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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
- Creazione delle immagini
- Esempio di risoluzione della fotocamera (Windows 10)
- Esempio di app della fotocamera di base (Windows 10)
- Esempio di stabilizzazione video (Windows 10)
- Esempio di rilevamento viso della fotocamera (Windows 10)
- Esempio di controlli della fotocamera manuale (Windows 10)
- Esempio di intervallo dinamico elevato (Windows 10)
- Esempio di acquisizione avanzata della fotocamera