Namespace:System.Drawing.Imaging
Assembly:System.Drawing.dll
用于向图像编码器传递值或值数组。
public sealed class EncoderParameter : IDisposable
继承 Object
→ EncoderParameter
实现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) |