BitmapEncoder Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Содержит методы для создания, редактирования и сохранения изображений.
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
- Наследование
- Атрибуты
Требования к Windows
Семейство устройств |
Windows 10 (появилось в 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (появилось в v1.0)
|
Примеры
Ниже приведен частичный пример создания объекта кодировщика. В этом примере предполагается, что вы выбрали файл с windows.Storage.Pickers.FileSavePicker. Полные инструкции по выбору файла, созданию кодировщика и кодированию изображения см. в разделе Создание образа.
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();
}
}
}
Комментарии
Форматы изображений
BitmapEncoder может кодировать следующие форматы.
- JPEG
- PNG
- GIF
- TIFF
- BMP
- JPEG-XR
Список форматов декодирования см. в разделе BitmapDecoder .
BitmapEncoder ведет себя иначе, чем BitmapDecoder в том, что он не предоставляет случайный доступ к кадрам в изображении. Вместо этого необходимо выполнять действия с кодировщиком в определенном порядке.
При создании BitmapEncoder он предоставляет доступ к данным в контейнере и первом кадре. Завершив настройку данных для первого кадра и контейнера, если вы не хотите кодировать дополнительные кадры, вызовите FlushAsync , чтобы завершить операцию кодирования.
Если вы хотите закодировать дополнительный кадр, вызовите GoToNextFrameAsync. При этом данные в контейнере и первом кадре фиксируются, поэтому вы больше не сможете редактировать их. На этом этапе любые действия, выполняемые с кодировщиком, повлияют на второй кадр. Завершив работу с каждым кадром, вы можете вызвать GoToNextFrameAsync , чтобы зафиксировать и добавить новый кадр, или вызвать FlushAsync для завершения. Кодировщики растровых изображений могут предоставлять различные параметры кодирования, влияющие на качество, размер и другие свойства закодированного выходного файла. Дополнительные сведения см. в разделе Обработка образов.
Журнал версий
Версия Windows | Версия пакета SDK | Добавленная стоимость |
---|---|---|
1809 | 17763 | HeifEncoderId |
Свойства
BitmapContainerProperties |
Метаданные контейнера. |
BitmapProperties |
Метаданные для выбранного кадра. |
BitmapTransform |
Объект BitmapTransform , используемый для указания способа преобразования растрового изображения кадра. |
BmpEncoderId |
Уникальный идентификатор встроенного кодировщика BMP. |
EncoderInformation |
Сведения о кодировщике растрового рисунка. |
GeneratedThumbnailHeight |
Высота любого созданного эскиза (в пикселях). |
GeneratedThumbnailWidth |
Ширина любого созданного эскиза (в пикселях). |
GifEncoderId |
Уникальный идентификатор встроенного кодировщика GIF. |
HeifEncoderId |
Уникальный идентификатор встроенного кодировщика HEIF. |
IsThumbnailGenerated |
Указывает, создается ли новый эскиз автоматически. |
JpegEncoderId |
Уникальный идентификатор встроенного кодировщика JPEG. |
JpegXREncoderId |
Уникальный идентификатор встроенного кодировщика JPEG-XR. |
PngEncoderId |
Уникальный идентификатор встроенного кодировщика PNG. |
TiffEncoderId |
Уникальный идентификатор встроенного кодировщика TIFF. |
Методы
CreateAsync(Guid, IRandomAccessStream) |
Асинхронно создает новый BitmapEncoder. |
CreateAsync(Guid, IRandomAccessStream, IIterable<KeyValuePair<String,BitmapTypedValue>>) |
Асинхронно создает новый BitmapEncoder для указанного кодека с указанными параметрами кодирования и инициализирует его в потоке. |
CreateForInPlacePropertyEncodingAsync(BitmapDecoder) |
Асинхронно создает новый BitmapEncoder для редактирования свойств на месте и метаданных. Новый кодировщик может изменять только свойства растрового рисунка на месте и будет завершатся ошибкой для любых других способов использования. |
CreateForTranscodingAsync(IRandomAccessStream, BitmapDecoder) |
Асинхронно создает новый BitmapEncoder и инициализирует его, используя данные из существующего BitmapDecoder. |
FlushAsync() |
Асинхронно фиксирует и сбрасывает все данные изображения. |
GetEncoderInformationEnumerator() |
Список кодировщиков растровых изображений, установленных в системе, и сведения о них. |
GoToNextFrameAsync() |
Асинхронно фиксирует данные текущего кадра и добавляет новый пустой кадр для редактирования. |
GoToNextFrameAsync(IIterable<KeyValuePair<String,BitmapTypedValue>>) |
Асинхронно фиксирует данные текущего кадра и добавляет новый пустой кадр с указанными параметрами кодирования для редактирования. |
SetPixelData(BitmapPixelFormat, BitmapAlphaMode, UInt32, UInt32, Double, Double, Byte[]) |
Задает данные о пикселях для кадра. |
SetSoftwareBitmap(SoftwareBitmap) |
Задает данные изображения текущего кадра с помощью указанного softwareBitmap. |
Применяется к
См. также раздел
- Создание образов
- Пример разрешения камеры (Windows 10)
- Пример приложения для базовой камеры (Windows 10)
- Пример стабилизации видео (Windows 10)
- Пример обнаружения лиц камеры (Windows 10)
- Пример элементов управления камерой вручную (Windows 10)
- Пример с высоким динамическим диапазоном (Windows 10)
- Пример расширенного захвата камеры