So wird’s gemacht: Verwenden von Codierungsoptionen (HTML)
[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation ]
In diesem Thema erfahren Sie, wie Codierungsoptionen für einen BitmapEncoder festgelegt werden. Mit Codierungsoptionen können Sie das Verhalten und die Parameter eines Encoders exakt bestimmen. Sie können z. B. mit der ImageQuality-Option des JPEG-Encoders die Beziehung zwischen Bildqualität und Dateigröße kontrollieren. Normalerweise benötigen Sie keine Codierungsoptionen, da der Encoder automatisch die richtigen Standardwerte wählt.
Codierungsoptionen werden nur durch die CreateAsync- und die GoToNextFrameAsync-Methode von BitmapEncoder offengelegt. Dies liegt daran, dass Sie bei der Initialisierung des Encoders oder des Rahmens die Codierungsoptionen angeben müssen.
Wissenswertes
Technologien
Voraussetzungen
- Sie sollten mit der Erstellung einer einfachen Windows-Runtime-App mit JavaScript vertraut sein. Weitere Informationen finden Sie unter Erstellen Ihrer ersten Windows-Runtime-App mit JavaScript.
- Sie sollten wissen, wie Bilder mit BitmapEncoder codiert werden. Weitere Informationen finden Sie unter So wird's gemacht: Codieren von neuen Bildern.
Referenz zu Codierungsoptionen
Sie können die folgenden Codierungsoptionen für BitmapEncoder verwenden. Eine Codierungsoption wird durch ihren Namen (eine Zeichenfolge) und einen Wert mit einem bestimmten Datentyp definiert (Windows.Foundation.PropertyType).
Name | PropertyType | Verwendungshinweise | Gültige Formate |
---|---|---|---|
ImageQuality | single | Gültige Werte von 0 bis 1.0 Größere Werte bedeuten höhere Qualität. | JPEG, JPEG-XR |
CompressionQuality | single | Gültige Werte von 0 bis 1.0 Höhere Werte bedeuten ein effizienteres und langsameres Komprimierungsverfahren. | TIFF |
Lossless | boolean | Wenn dieser Wert auf "true" festgelegt ist, wird die Option "ImageQuality" ignoriert. | JPEG-XR |
InterlaceOption | boolean | Gibt an, ob der Interlacemodus für das Bild verwendet wird | PNG |
FilterOption | uint8 | Verwenden Sie die PngFilterMode-Enumeration. | PNG |
TiffCompressionMethod | uint8 | Verwenden Sie die TiffCompressionMode-Enumeration. | TIFF |
Luminance | uint32Array | Ein Array mit 64 Elementen, das die Quantifizierungskonstanten für die Leuchtdichte enthält. | JPEG |
Chrominance | uint32Array | Ein Array mit 64 Elementen, das die Quantifizierungskonstanten für die Chrominanz enthält. | JPEG |
JpegYCrCbSubsampling | uint8 | Verwenden Sie die JpegSubsamplingMode-Enumeration. | JPEG |
SuppressApp0 | boolean | Gibt an, ob die Erstellung eines App0-Metadatenblocks unterdrückt wird. | JPEG |
EnableV5Header32bppBGRA | boolean | Gibt an, ob als Version 5 des BMP-Formats, die Alphawerte unterstützt, codiert werden soll. | BMP |
Anweisungen
Schritt 1: Abrufen eines Ausgabestreams
Schreiben Sie den Anfang einer Funktion, die einen IRandomAccessStream erhält, der über die Datei geöffnet wurde, die Sie codieren. Sie müssen einen mit ReadWrite-Rechten geöffneten Stream verwenden.
function (stream) {
Hinweis Dieses Beispiel geht davon aus, dass Sie ein JPEG-Bild codieren. Die Codierungsoptionen sind für das Bildformat spezifisch.
Wie Sie einen Ausgabestream erhalten, erfahren Sie unter So wird's gemacht: Codieren von neuen Bildern
Schritt 2: Erstellen einer Sammlung von Codierungsoptionen
Zur Speicherung einer oder mehrerer Codierungsoptionen wird ein BitmapPropertySet-Objekt verwenden. Eine Codierungsoption besteht aus einem Schlüssel-Wert-Paar. Der Schlüssel ist eine Zeichenfolge, die auf den Namen der Codierungsoption festgelegt ist, z. B. ImageQuality. Der Wert ist ein BitmapTypedValue-Objekt, mit dem Sie die reale Codierungsoption einem expliziten Datentyp zuordnen können (Windows.Foundation.PropertyType).
Dieses Beispiel veranschaulicht, wie der JPEG-Encoder so eingestellt wird, dass er die höchste verfügbare Qualität liefert. Erstellen Sie zum Festlegen der Qualität eine Codierungsoption mit dem Schlüssel ImageQuality, und legen Sie den Wert auf die Zahl 1.0 mit einfacher Genauigkeit fest (der größte gültige Wert).
var propertySet = new Windows.Graphics.Imaging.BitmapPropertySet();
var qualityValue = new Windows.Graphics.Imaging.BitmapTypedValue(
1.0, // Maximum quality
Windows.Foundation.PropertyType.single
);
propertySet.insert("ImageQuality", qualityValue);
Schritt 3: Initialisieren des Encoders mit den Codierungsoptionen
Verwenden Sie die CreateAsync-Methode mit den Codierungsoptionen als letztem Parameter.
Windows.Graphics.Imaging.BitmapEncoder.createAsync(
Windows.Graphics.Imaging.BitmapEncoder.jpegEncoderId,
stream,
propertySet
).then(function (encoder) {
// Encoder is initialized with encoding options.
});
Sie verfügen nun über einen Encoder, den Sie in normalen Fällen verwenden können.