BitmapEncoder Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Berisi metode untuk membuat, mengedit, dan menyimpan gambar.
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
- Warisan
- Atribut
Persyaratan Windows
Rangkaian perangkat |
Windows 10 (diperkenalkan dalam 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v1.0)
|
Contoh
Berikut adalah contoh parsial untuk membuat objek encoder. Contoh ini mengasumsikan Anda memilih file dengan Windows.Storage.Pickers.FileSavePicker. Untuk instruksi lengkap tentang memilih file, membuat encoder, dan mengodekan gambar, lihat Pencitraan
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();
}
}
}
Keterangan
Format gambar
BitmapEncoder dapat mengodekan format berikut.
- JPEG
- PNG
- GIF
- TIFF
- BMP
- JPEG-XR
Untuk daftar format pendekodean, lihat topik BitmapDecoder .
BitmapEncoder berperilaku berbeda dari BitmapDecoder karena tidak menyediakan akses acak ke bingkai dalam gambar. Sebagai gantinya, Anda perlu melakukan tindakan pada encoder dalam urutan tertentu.
Saat Anda membuat BitmapEncoder, BitmapEncoder menyediakan akses ke data pada kontainer dan bingkai pertama. Ketika Anda selesai mengatur data pada bingkai dan kontainer pertama, jika Anda tidak ingin mengodekan bingkai tambahan apa pun, maka panggil FlushAsync untuk menyelesaikan operasi pengodean.
Jika Anda ingin mengodekan bingkai tambahan, panggil GoToNextFrameAsync. Ini menerapkan data dalam kontainer dan bingkai pertama sehingga Anda tidak dapat mengeditnya lagi. Pada titik ini, tindakan apa pun yang Anda lakukan pada encoder akan memengaruhi bingkai kedua. Setelah selesai dengan setiap bingkai, Anda dapat memanggil GoToNextFrameAsync untuk menerapkan dan menambahkan bingkai baru, atau memanggil FlushAsync untuk menyelesaikannya. Encoder bitmap dapat mengekspos berbagai opsi pengodean yang memengaruhi kualitas, ukuran, dan properti lain dari file output yang dikodekan. Untuk informasi selengkapnya, lihat Pencitraan.
Riwayat versi
Versi Windows | Versi SDK | Nilai ditambahkan |
---|---|---|
1809 | 17763 | HeifEncoderId |
Properti
BitmapContainerProperties |
Metadata untuk kontainer. |
BitmapProperties |
Metadata untuk bingkai yang dipilih. |
BitmapTransform |
Objek BitmapTransform yang digunakan untuk menentukan bagaimana bitmap bingkai akan diubah. |
BmpEncoderId |
Pengidentifikasi unik encoder BMP bawaan. |
EncoderInformation |
Informasi tentang encoder bitmap. |
GeneratedThumbnailHeight |
Tinggi, dalam piksel, dari gambar mini yang dihasilkan. |
GeneratedThumbnailWidth |
Lebar, dalam piksel, dari gambar mini yang dihasilkan. |
GifEncoderId |
Pengidentifikasi unik encoder GIF bawaan. |
HeifEncoderId |
Pengidentifikasi unik dari encoder HEIF bawaan. |
IsThumbnailGenerated |
Menunjukkan apakah gambar mini baru dibuat secara otomatis atau tidak. |
JpegEncoderId |
Pengidentifikasi unik encoder JPEG bawaan. |
JpegXREncoderId |
Pengidentifikasi unik encoder JPEG-XR bawaan. |
PngEncoderId |
Pengidentifikasi unik encoder PNG bawaan. |
TiffEncoderId |
Pengidentifikasi unik dari encoder TIFF bawaan. |
Metode
CreateAsync(Guid, IRandomAccessStream) |
Secara asinkron membuat BitmapEncoder baru. |
CreateAsync(Guid, IRandomAccessStream, IIterable<KeyValuePair<String,BitmapTypedValue>>) |
Secara asinkron membuat BitmapEncoder baru untuk codec yang ditentukan dengan opsi pengodean yang ditentukan dan menginisialisasinya pada aliran. |
CreateForInPlacePropertyEncodingAsync(BitmapDecoder) |
Secara asinkron membuat BitmapEncoder baru untuk pengeditan properti dan metadata di tempat. Encoder baru hanya dapat mengedit properti bitmap di tempat dan akan gagal untuk penggunaan lain. |
CreateForTranscodingAsync(IRandomAccessStream, BitmapDecoder) |
Secara asinkron membuat BitmapEncoder baru dan menginisialisasinya menggunakan data dari BitmapDecoder yang ada. |
FlushAsync() |
Secara asinkron melakukan dan menghapus semua data gambar. |
GetEncoderInformationEnumerator() |
Daftar encoder bitmap yang diinstal pada sistem dan informasi tentang mereka. |
GoToNextFrameAsync() |
Secara asinkron menerapkan data bingkai saat ini dan menambahkan bingkai kosong baru untuk diedit. |
GoToNextFrameAsync(IIterable<KeyValuePair<String,BitmapTypedValue>>) |
Secara asinkron menerapkan data bingkai saat ini dan menambahkan bingkai kosong baru, dengan opsi pengodean yang ditentukan, untuk diedit. |
SetPixelData(BitmapPixelFormat, BitmapAlphaMode, UInt32, UInt32, Double, Double, Byte[]) |
Mengatur data piksel pada bingkai. |
SetSoftwareBitmap(SoftwareBitmap) |
Mengatur data gambar bingkai saat ini menggunakan SoftwareBitmap yang ditentukan. |