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 Form 中,並從表單的建構函式呼叫 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 和更新版本中,只有 Windows 作業系統才支援包含此類型的 System.Drawing.Common 套件。 在跨平臺應用程式中使用此類型會導致編譯時期警告和執行時間例外狀況。 如需詳細資訊,請參閱 僅限 Windows 上支援的 System.Drawing.Common

建構函式

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[])

使用指定的 Encoder 物件和 64 位元整數的陣列,初始化 EncoderParameter 類別的新執行個體。 設定 ValueType 屬性為 ValueTypeLong (32 位元),並設定 NumberOfValues 屬性為陣列中的元素數目。

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

使用指定的 Encoder 物件和兩個 64 位元整數的陣列,初始化 EncoderParameter 類別的新執行個體。 這兩個陣列表示陣列整數範圍。 設定 ValueType 屬性為 ValueTypeLongRange,並設定 NumberOfValues 屬性為 rangebegin 陣列中的元素數目,這個數目必須和 rangeend 陣列中的元素數目相同。

EncoderParameter(Encoder, String)

使用指定 EncoderParameter 物件和字元字串,初始化 Encoder 類別的新執行個體。 在字串儲存在 EncoderParameter 物件中之前,會先轉換為 Null 終端 ASCII 字串。 設定 ValueType 屬性為 ValueTypeAscii,並設定 NumberOfValues 屬性為包含 null 結束字元 (Terminator) 的 ASCII 字串的長度。

屬性

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)

適用於

另請參閱