다음을 통해 공유


방법: 인코더에서 지원하는 매개 변수 확인

품질 및 압축 수준 같은 이미지 매개 변수를 조정할 수 있지만 이 경우 특정 이미지 인코더에서 지원되는 매개 변수를 알고 있어야 합니다. Image 클래스에서는 특정 인코더에서 지원되는 이미지 매개 변수를 확인할 수 있도록 GetEncoderParameterList 메서드를 제공합니다. 인코더는 GUID로 지정합니다. GetEncoderParameterList 메서드는 EncoderParameter 개체의 배열을 반환합니다.

예제

다음 예제 코드에서는 JPEG 인코더에 대해 지원되는 매개 변수를 출력합니다. Encoder 클래스 개요에 있는 이 매개 변수 범주 및 연관된 GUID 목록을 사용하여 각 매개 변수의 범주를 확인합니다.

Private Sub GetSupportedParameters(ByVal e As PaintEventArgs)
    Dim bitmap1 As New Bitmap(1, 1)
    Dim jpgEncoder As ImageCodecInfo = GetEncoder(ImageFormat.Jpeg)
    Dim paramList As EncoderParameters = _
    bitmap1.GetEncoderParameterList(jpgEncoder.Clsid)
    Dim encParams As EncoderParameter() = paramList.Param
    Dim paramInfo As New StringBuilder()

    Dim i As Integer
    For i = 0 To encParams.Length - 1
        paramInfo.Append("Param " & i & " holds " & _
            encParams(i).NumberOfValues & " items of type " & _
            encParams(i).Type.ToString() & vbCr & vbLf & "Guid category: " & _
             encParams(i).Encoder.Guid.ToString() & vbCr & vbLf)
    Next i

    e.Graphics.DrawString(paramInfo.ToString(), _
       Me.Font, Brushes.Red, 10.0F, 10.0F)
End Sub

Private Function GetEncoder(ByVal format As ImageFormat) As ImageCodecInfo

    Dim codecs As ImageCodecInfo() = ImageCodecInfo.GetImageDecoders()

    Dim codec As ImageCodecInfo
    For Each codec In codecs
        If codec.FormatID = format.Guid Then
            Return codec
        End If
    Next codec
    Return Nothing

End Function
private void GetSupportedParameters(PaintEventArgs e)
{
    Bitmap bitmap1 = new Bitmap(1, 1);
    ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
    EncoderParameters paramList = bitmap1.GetEncoderParameterList(jpgEncoder.Clsid);
    EncoderParameter[] encParams = paramList.Param;
    StringBuilder paramInfo = new StringBuilder();

    for (int i = 0; i < encParams.Length; i++)
    {
        paramInfo.Append("Param " + i + " holds " + encParams[i].NumberOfValues +
            " items of type " +
            encParams[i].ValueType + "\r\n" + "Guid category: " + encParams[i].Encoder.Guid + "\r\n");

    }
    e.Graphics.DrawString(paramInfo.ToString(), this.Font, Brushes.Red, 10.0F, 10.0F);
}

private ImageCodecInfo GetEncoder(ImageFormat format)
{

    ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();

    foreach (ImageCodecInfo codec in codecs)
    {
        if (codec.FormatID == format.Guid)
        {
            return codec;
        }
    }
    return null;
}

코드 컴파일

이 예제에는 다음 사항이 필요합니다.

참고 항목

작업

방법: 설치된 인코더 나열

개념

비트맵의 유형

기타 리소스

관리 GDI+에서 이미지 인코더 및 디코더 사용