BitmapEncoder 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
이미지를 만들고, 편집하고, 저장하는 메서드를 포함합니다.
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 인코더의 고유 식별자입니다. |