EncoderParameter 类

定义

用于将值或值数组传递给图像编码器。

public ref class EncoderParameter sealed : IDisposable
public sealed class EncoderParameter : IDisposable
type EncoderParameter = class
    interface IDisposable
Public NotInheritable Class EncoderParameter
Implements IDisposable
继承
EncoderParameter
实现

示例

下面的代码示例演示如何使用EncoderParameter构造函数创建EncoderParameter。 若要运行此示例,请将代码粘贴到 Windows 窗体中,并从窗体的构造函数调用 VaryQualityLevel 该方法。 此示例需要一个名为 TestPhoto.jpgc:\的图像文件。

private void VaryQualityLevel()
{
    // Get a bitmap.
    Bitmap bmp1 = new Bitmap(@"c:\TestPhoto.jpg");
    ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);

    // Create an Encoder object based on the GUID
    // for the Quality parameter category.
    System.Drawing.Imaging.Encoder myEncoder =
        System.Drawing.Imaging.Encoder.Quality;

    // Create an EncoderParameters object.
    // An EncoderParameters object has an array of EncoderParameter
    // objects. In this case, there is only one
    // EncoderParameter object in the array.
    EncoderParameters myEncoderParameters = new EncoderParameters(1);

    EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 50L);
    myEncoderParameters.Param[0] = myEncoderParameter;
    bmp1.Save(@"c:\TestPhotoQualityFifty.jpg", jpgEncoder, myEncoderParameters);

    myEncoderParameter = new EncoderParameter(myEncoder, 100L);
    myEncoderParameters.Param[0] = myEncoderParameter;
    bmp1.Save(@"c:\TestPhotoQualityHundred.jpg", jpgEncoder, myEncoderParameters);

    // Save the bitmap as a JPG file with zero quality level compression.
    myEncoderParameter = new EncoderParameter(myEncoder, 0L);
    myEncoderParameters.Param[0] = myEncoderParameter;
    bmp1.Save(@"c:\TestPhotoQualityZero.jpg", jpgEncoder, myEncoderParameters);
}
Private Sub VaryQualityLevel()
    ' Get a bitmap.
    Dim bmp1 As New Bitmap("c:\TestPhoto.jpg")
    Dim jpgEncoder As ImageCodecInfo = GetEncoder(ImageFormat.Jpeg)

    ' Create an Encoder object based on the GUID
    ' for the Quality parameter category.
    Dim myEncoder As System.Drawing.Imaging.Encoder = System.Drawing.Imaging.Encoder.Quality

    ' Create an EncoderParameters object.
    ' An EncoderParameters object has an array of EncoderParameter
    ' objects. In this case, there is only one
    ' EncoderParameter object in the array.
    Dim myEncoderParameters As New EncoderParameters(1)

    Dim myEncoderParameter As New EncoderParameter(myEncoder, 50&)
    myEncoderParameters.Param(0) = myEncoderParameter
    bmp1.Save("c:\TestPhotoQualityFifty.jpg", jpgEncoder, myEncoderParameters)

    myEncoderParameter = New EncoderParameter(myEncoder, 100&)
    myEncoderParameters.Param(0) = myEncoderParameter
    bmp1.Save("c:\TestPhotoQualityHundred.jpg", jpgEncoder, myEncoderParameters)

    ' Save the bitmap as a JPG file with zero quality level compression.
    myEncoderParameter = New EncoderParameter(myEncoder, 0&)
    myEncoderParameters.Param(0) = myEncoderParameter
    bmp1.Save("c:\TestPhotoQualityZero.jpg", jpgEncoder, myEncoderParameters)

End Sub
private ImageCodecInfo GetEncoder(ImageFormat format)
{
    ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();

    foreach (ImageCodecInfo codec in codecs)
    {
        if (codec.FormatID == format.Guid)
        {
            return codec;
        }
    }
    
    return null;
}
Private Function GetEncoder(ByVal format As ImageFormat) As ImageCodecInfo

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

    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

注解

还可以使用 EncoderParameter 对象接收特定图像编码器的特定参数支持的值列表。

Note

在 .NET 6 及更高版本中,包含此类型的 System.Drawing.Common 包 仅支持在 Windows 操作系统上运行。 在跨平台应用中使用此类型会导致编译时警告和运行时异常。 有关详细信息,请参阅 仅在 Windows 上支持的 System.Drawing.Common。

构造函数

名称 说明
EncoderParameter(Encoder, Byte, Boolean)

使用指定的Encoder对象和一个 8 位值初始化类的新实例EncoderParameter。 将ValueType属性设置为或ValueTypeByte将属性设置为 NumberOfValuesValueTypeUndefined 1。

EncoderParameter(Encoder, Byte)

使用指定的Encoder对象和一个无符号 8 位整数初始化类的新实例EncoderParameter。 将 ValueType 属性设置为 ValueTypeByte,并将 NumberOfValues 属性设置为 1。

EncoderParameter(Encoder, Byte[], Boolean)

使用指定的Encoder对象和字节数组初始化类的新实例EncoderParameter。 将ValueType属性设置为或ValueTypeByte设置属性,并将NumberOfValues该属性设置为数组ValueTypeUndefined中的元素数。

EncoderParameter(Encoder, Byte[])

使用指定的Encoder对象和无符号 8 位整数数组初始化类的新实例EncoderParameter。 将 ValueType 属性 ValueTypeByte设置为 ,并将 NumberOfValues 属性设置为数组中的元素数。

EncoderParameter(Encoder, Int16)

使用指定的Encoder对象和一个 16 位整数初始化类的新实例EncoderParameter。 将 ValueType 属性设置为 ValueTypeShort,并将 NumberOfValues 属性设置为 1。

EncoderParameter(Encoder, Int16[])

使用指定的Encoder对象和 16 位整数数组初始化类的新实例EncoderParameter。 将 ValueType 属性 ValueTypeShort设置为 ,并将 NumberOfValues 属性设置为数组中的元素数。

EncoderParameter(Encoder, Int32, EncoderParameterValueType, IntPtr)

使用指定的Encoder对象、值数、值的数据类型以及指向对象中EncoderParameter存储的值的指针初始化类的新实例EncoderParameter

EncoderParameter(Encoder, Int32, Int32, Int32, Int32)

使用指定的Encoder对象和 32 位整数初始化类的新实例EncoderParameter。 四个整数表示一系列分数。 前两个整数表示区域中的最小分数,其余两个整数表示区域中的最大分数。 将 ValueType 属性设置为 ValueTypeRationalRange,并将 NumberOfValues 属性设置为 1。

EncoderParameter(Encoder, Int32, Int32, Int32)
已过时.
已过时.
已过时.

使用指定的Encoder对象和三个整数初始化类的新实例EncoderParameter,该实例指定值的数量、值的数据类型以及指向对象中存储的值的EncoderParameter指针。

EncoderParameter(Encoder, Int32, Int32)

使用指定的Encoder对象和一对 32 位整数初始化类的新实例EncoderParameter。 整数对表示一个分数,第一个整数是分子,第二个整数是分母。 将 ValueType 属性设置为 ValueTypeRational,并将 NumberOfValues 属性设置为 1。

EncoderParameter(Encoder, Int32[], Int32[], Int32[], Int32[])

使用指定的Encoder对象和 32 位整数的四个数组初始化类的新实例EncoderParameter。 四个数组表示数组合理范围。 合理范围是从最小分数值到最大小数值的所有分数集。 将 ValueType 属性设置为,并将该 ValueTypeRationalRange属性设置为 NumberOfValues 数组中的 numerator1 元素数,这必须与其他三个数组中的元素数相同。

EncoderParameter(Encoder, Int32[], Int32[])

使用指定的Encoder对象和 32 位整数的两个数组初始化类的新实例EncoderParameter。 这两个数组表示分数数组。 将 ValueType 属性设置为,并将属性 ValueTypeRational设置为 NumberOfValues 数组中的 numerator 元素数,该数目必须与数组中的 denominator 元素数相同。

EncoderParameter(Encoder, Int64, Int64)

使用指定的Encoder对象和一对 64 位整数初始化类的新实例EncoderParameter。 整数对表示整数范围,第一个整数是区域中的最小数字,第二个整数是范围中的最大数字。 将 ValueType 属性设置为 ValueTypeLongRange,并将 NumberOfValues 属性设置为 1。

EncoderParameter(Encoder, Int64)

使用指定的Encoder对象和一个 64 位整数初始化类的新实例EncoderParameter。 将 ValueType 属性设置为 ValueTypeLong (32 位),并将 NumberOfValues 属性设置为 1。

EncoderParameter(Encoder, Int64[], Int64[])

使用指定的Encoder对象和两个 64 位整数数组初始化类的新实例EncoderParameter。 这两个数组表示数组整数范围。 将 ValueType 属性设置为,并将属性 ValueTypeLongRange设置为 NumberOfValues 数组中的 rangebegin 元素数,该数目必须与数组中的 rangeend 元素数相同。

EncoderParameter(Encoder, Int64[])

使用指定的Encoder对象和 64 位整数数组初始化类的新实例EncoderParameter。 将 ValueType 属性设置为 ValueTypeLong (32 位),并将 NumberOfValues 属性设置为数组中的元素数。

EncoderParameter(Encoder, String)

使用指定的Encoder对象和字符串初始化类的新实例EncoderParameter。 在对象中存储字符串之前,该字符串将转换为以 null 结尾的 EncoderParameter ASCII 字符串。 将ValueType属性设置为 ,并将NumberOfValues属性ValueTypeAscii设置为 ASCII 字符串的长度,包括 NULL 终止符。

属性

名称 说明
Encoder

获取或设置 Encoder 与此 EncoderParameter 对象关联的对象。 该Encoder对象封装全局唯一标识符(GUID),该标识符指定存储在此EncoderParameter对象中的参数的类别(例如QualityColorDepthCompression)。

NumberOfValues

获取存储在此 EncoderParameter 对象中的值的数组中的元素数。

Type

获取存储在此 EncoderParameter 对象中的值的数据类型。

ValueType

获取存储在此 EncoderParameter 对象中的值的数据类型。

方法

名称 说明
Dispose()

释放此 EncoderParameter 对象使用的所有资源。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
Finalize()

允许对象 EncoderParameter 在垃圾回收对象回收之前 EncoderParameter 尝试释放资源并执行其他清理操作。

GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
ToString()

返回一个表示当前对象的字符串。

(继承自 Object)

适用于

另请参阅