BitmapEncoder Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Enthält Methoden zum Erstellen, Bearbeiten und Speichern von Bildern.
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
- Vererbung
- Attribute
Windows-Anforderungen
Gerätefamilie |
Windows 10 (eingeführt in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)
|
Beispiele
Hier sehen Sie ein teilbeispiel für das Erstellen eines Encoderobjekts. In diesem Beispiel wird davon ausgegangen, dass Sie eine Datei mit Windows.Storage.Pickers.FileSavePicker ausgewählt haben. Vollständige Anweisungen zum Auswählen einer Datei, zum Erstellen eines Encoders und zum Codieren eines Bilds finden Sie unter Imageerstellung.
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();
}
}
}
Hinweise
Bildformate
BitmapEncoder kann die folgenden Formate codieren.
- JPEG
- PNG
- GIF
- TIFF
- BMP
- JPEG-XR
Eine Liste der Decodierungsformate finden Sie im Thema BitmapDecoder .
BitmapEncoder verhält sich anders als BitmapDecoder , da es keinen zufälligen Zugriff auf die Frames in einem Bild bietet. Stattdessen müssen Sie Aktionen für den Encoder in einer bestimmten Reihenfolge ausführen.
Wenn Sie einen BitmapEncoder erstellen, bietet er Zugriff auf Daten im Container und im ersten Frame. Wenn Sie mit dem Festlegen von Daten für den ersten Frame und Container fertig sind, und wenn Sie keine zusätzlichen Frames codieren möchten, rufen Sie FlushAsync auf, um den Codierungsvorgang abzuschließen.
Wenn Sie einen zusätzlichen Frame codieren möchten, rufen Sie GoToNextFrameAsync auf. Dadurch werden die Daten im Container und im ersten Frame committen, sodass Sie sie nicht mehr bearbeiten können. An diesem Punkt wirken sich alle Aktionen, die Sie für den Encoder ausführen, auf den zweiten Frame aus. Nachdem Sie mit jedem Frame fertig sind, können Sie GoToNextFrameAsync aufrufen, um einen commit und einen neuen Frame anzufügen, oder FlushAsync aufrufen, um den Vorgang abzuschließen. Bitmap-Encoder können verschiedene Codierungsoptionen verfügbar machen, die sich auf die Qualität, Größe und andere Eigenschaften der codierten Ausgabedatei auswirken. Weitere Informationen finden Sie unter Imageerstellung.
Versionsverlauf
Windows-Version | SDK-Version | Mehrwert |
---|---|---|
1809 | 17763 | HeifEncoderId |
Eigenschaften
BitmapContainerProperties |
Die Metadaten für den Container. |
BitmapProperties |
Die Metadaten für den ausgewählten Frame. |
BitmapTransform |
Ein BitmapTransform-Objekt , das verwendet wird, um anzugeben, wie die Framebit transformiert werden soll. |
BmpEncoderId |
Der eindeutige Bezeichner des integrierten BMP-Encoders. |
EncoderInformation |
Informationen zum Bitmapencoder. |
GeneratedThumbnailHeight |
Die Höhe einer generierten Miniaturansicht in Pixel. |
GeneratedThumbnailWidth |
Die Breite einer generierten Miniaturansicht in Pixel. |
GifEncoderId |
Der eindeutige Bezeichner des integrierten GIF-Encoders. |
HeifEncoderId |
Der eindeutige Bezeichner des integrierten HEIF-Encoders. |
IsThumbnailGenerated |
Gibt an, ob automatisch eine neue Miniaturansicht generiert wird. |
JpegEncoderId |
Der eindeutige Bezeichner des integrierten JPEG-Encoders. |
JpegXREncoderId |
Der eindeutige Bezeichner des integrierten JPEG-XR-Encoders. |
PngEncoderId |
Der eindeutige Bezeichner des integrierten PNG-Encoders. |
TiffEncoderId |
Der eindeutige Bezeichner des integrierten TIFF-Encoders. |
Methoden
CreateAsync(Guid, IRandomAccessStream) |
Erstellt asynchron einen neuen BitmapEncoder. |
CreateAsync(Guid, IRandomAccessStream, IIterable<KeyValuePair<String,BitmapTypedValue>>) |
Erstellt asynchron einen neuen BitmapEncoder für den angegebenen Codec mit den angegebenen Codierungsoptionen und initialisiert ihn in einem Stream. |
CreateForInPlacePropertyEncodingAsync(BitmapDecoder) |
Erstellt asynchron einen neuen BitmapEncoder für die direkte Bearbeitung von Eigenschaften und Metadaten. Der neue Encoder kann Bitmapeigenschaften nur vor Ort bearbeiten und schlägt bei anderen Verwendungen fehl. |
CreateForTranscodingAsync(IRandomAccessStream, BitmapDecoder) |
Erstellt asynchron einen neuen BitmapEncoder und initialisiert es mithilfe von Daten aus einem vorhandenen BitmapDecoder. |
FlushAsync() |
Führt einen asynchronen Commit aus und leert alle Bilddaten. |
GetEncoderInformationEnumerator() |
Eine Liste der auf dem System installierten Bitmapencoder und Informationen zu ihnen. |
GoToNextFrameAsync() |
Committ die aktuellen Framedaten asynchron und fügt einen neuen leeren Frame an, der bearbeitet werden soll. |
GoToNextFrameAsync(IIterable<KeyValuePair<String,BitmapTypedValue>>) |
Committ die aktuellen Framedaten asynchron und fügt einen neuen leeren Frame mit den angegebenen Codierungsoptionen an, die bearbeitet werden sollen. |
SetPixelData(BitmapPixelFormat, BitmapAlphaMode, UInt32, UInt32, Double, Double, Byte[]) |
Legt Pixeldaten für den Frame fest. |
SetSoftwareBitmap(SoftwareBitmap) |
Legt die Bilddaten des aktuellen Frames mithilfe der angegebenen SoftwareBitmap fest. |
Gilt für:
Weitere Informationen
- Bildverarbeitung
- Kameraauflösungsbeispiel (Windows 10)
- Beispiel für einfache Kamera-App (Windows 10)
- Videostabilisierungsbeispiel (Windows 10)
- Beispiel für die Kamera-Gesichtserkennung (Windows 10)
- Beispiel für manuelle Kamerasteuerungen (Windows 10)
- Beispiel für einen hohen dynamischen Bereich (Windows 10)
- Beispiel für erweiterte Kameraerfassung