EncoderParameter Class

Namespace:System.Drawing.Imaging
Assembly:System.Drawing.dll

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

public sealed class EncoderParameter : IDisposable

继承 ObjectEncoderParameter
实现IDisposable

示例

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

private void VaryQualityLevel()
{
    //获取位图
    Bitmap bmp1 = new Bitmap(@"c:\TestPhoto.jpg");
    ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);

    //基于GUID为质量参数类别创建一个Encoder对象。
    System.Drawing.Imaging.Encoder myEncoder =
        System.Drawing.Imaging.Encoder.Quality;

    //创建一个EncoderParameters对象。
    //EncoderParameters对象具有一个EncoderParameter对象数组。 在这种情况下,数组中只有一个EncoderParameter对象。
    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 ImageCodecInfo GetEncoder(ImageFormat format)
{
    ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();

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

备注

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

构造函数

名称说明
EncoderParameter(Encoder, Byte)用指定的 EncoderParameter 对象和一个无符号 8 位整数初始化 Encoder 类的新实例。 将 ValueType 属性设置为 ValueTypeByte,并将 NumberOfValues 属性设置为 1。
EncoderParameter(Encoder, Byte, Boolean)用指定的 EncoderParameter 对象和一个 8 位值初始化 Encoder 类的新实例。 将 ValueType 属性设置为 ValueTypeUndefined 或 ValueTypeByte,将 NumberOfValues 属性设置为 1。
EncoderParameter(Encoder, Byte[])用指定的 EncoderParameter 对象和一个无符号的 8 位整数数组初始化 Encoder 类的新实例。 将 ValueType 属性设置为 ValueTypeByte,将 NumberOfValues 属性设置为数组中的元素数。
EncoderParameter(Encoder, Byte[], Boolean)用指定的 EncoderParameter 对象和一个字节数组初始化 Encoder 类的新实例。 将 ValueType 属性设置为 ValueTypeUndefined 或 ValueTypeByte,将 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 对象中的参数的类别,例如 ColorDepth、Compression 或 EncoderParameter。
NumberOfValues获取存储在此 EncoderParameter 对象中的值数组的元素数。
Type获取存储在此 EncoderParameter 对象中的值的数据类型。
ValueType获取存储在此 EncoderParameter 对象中的值的数据类型。

方法

名称说明
Dispose()释放由此 EncoderParameter 对象使用的所有资源。
Equals(Object)确定指定的对象是否等于当前对象。 (Inherited from Object)
Finalize()允许 EncoderParameter 对象在垃圾回收操作回收 EncoderParameter 对象之前尝试释放资源并执行其他清理操作。
GetHashCode()作为默认哈希函数。 (Inherited from Object)
GetType()获取当前实例的 Type。 (Inherited from Object)
MemberwiseClone()创建当前 Object 的浅表副本。 (Inherited from Object)
ToString()返回表示当前对象的字符串。 (Inherited from Object)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值