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.jpg 的图像文件,该文件位于 c:\

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 对象接收特定图像编码器的特定参数支持的可能值列表。

注意

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

构造函数

EncoderParameter(Encoder, Byte)

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

EncoderParameter(Encoder, Byte, Boolean)

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

EncoderParameter(Encoder, Byte[])

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

EncoderParameter(Encoder, Byte[], Boolean)

用指定的 EncoderParameter 对象和一个字节数组初始化 Encoder 类的新实例。 将 ValueType 属性设置为 ValueTypeUndefinedValueTypeByte,将 NumberOfValues 属性设置为数组中的元素数。

EncoderParameter(Encoder, Int16)

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

EncoderParameter(Encoder, Int16[])

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

EncoderParameter(Encoder, Int32, EncoderParameterValueType, IntPtr)

用指定的 EncoderParameter 对象和三个整数初始化 Encoder 类的新实例,这三个整数分别指定值的数目、值的数据类型和指向存储在 EncoderParameter 对象中的值的指针。

EncoderParameter(Encoder, Int32, Int32)

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

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

用指定的 EncoderParameter 对象和三个整数初始化 Encoder 类的新实例,这三个整数分别指定值的数目、值的数据类型和指向存储在 EncoderParameter 对象中的值的指针。

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

用指定的 EncoderParameter 对象和四个 32 位整数初始化 Encoder 类的新实例。 这四个整数表示一个分数范围。 前两个整数表示该范围中最小的分数,而后两个整数表示该范围中最大的分数。 将 ValueType 属性设置为 ValueTypeRationalRange,并将 NumberOfValues 属性设置为 1。

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

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

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

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

EncoderParameter(Encoder, Int64)

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

EncoderParameter(Encoder, Int64, Int64)

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

EncoderParameter(Encoder, Int64[])

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

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

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

EncoderParameter(Encoder, String)

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

属性

Encoder

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

NumberOfValues

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

Type

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

ValueType

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

方法

Dispose()

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

Equals(Object)

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

(继承自 Object)
Finalize()

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

GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

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

(继承自 Object)

适用于

另请参阅