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 和更新版本中,只有 Windows作系統才支援包含此類型的 System.Drawing.Common 套件。 跨平台應用程式使用此類會引發編譯時警告及執行時異常。 如需詳細資訊,請參閱 僅限 Windows 上支援的 System.Drawing.Common。

建構函式

名稱 Description
EncoderParameter(Encoder, Byte, Boolean)

初始化一個新的類別實例 EncoderParameter ,使用指定的 Encoder 物件和一個 8 位元值。 將屬性設 ValueTypeValueTypeUndefinedValueTypeByte,並將屬性設 NumberOfValues 為1。

EncoderParameter(Encoder, Byte)

初始化一個新的類別實例 EncoderParameter ,包含指定的 Encoder 物件及一個無符號的 8 位元整數。 將屬性設 ValueTypeValueTypeByte,並將屬性設 NumberOfValues 為 1。

EncoderParameter(Encoder, Byte[], Boolean)

初始化一個新的類別實例 EncoderParameter ,使用指定的 Encoder 物件和一個位元組陣列。 將屬性設 ValueTypeValueTypeUndefinedValueTypeByte,並將屬性設定 NumberOfValues 為陣列中元素的數量。

EncoderParameter(Encoder, Byte[])

初始化一個新的類別實例 EncoderParameter ,包含指定的 Encoder 物件及一組無符號 8 位元整數陣列。 將屬性設 ValueTypeValueTypeByte,並將屬性設 NumberOfValues 為陣列中元素的數量。

EncoderParameter(Encoder, Int16)

初始化一個新的類別實例 EncoderParameter ,使用指定的 Encoder 物件和一個 16 位元整數。 將屬性設 ValueTypeValueTypeShort,並將屬性設 NumberOfValues 為 1。

EncoderParameter(Encoder, Int16[])

初始化一個新的類別實例 EncoderParameter ,包含指定的 Encoder 物件及一個 16 位元整數陣列。 將屬性設 ValueTypeValueTypeShort,並將屬性設 NumberOfValues 為陣列中元素的數量。

EncoderParameter(Encoder, Int32, EncoderParameterValueType, IntPtr)

初始化一個新的類別實例 EncoderParameter ,包含指定的 Encoder 物件、數值數量、值的資料型態,以及指向物件中儲存 EncoderParameter 值的指標。

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

初始化一個包含指定Encoder物件及四個 32 位元整數的類別新實例EncoderParameter。 這四個整數代表一個分數範圍。 前兩個整數代表該範圍內最小的分數,剩下的兩個整數代表該範圍內最大的分數。 將屬性設 ValueTypeValueTypeRationalRange,並將屬性設 NumberOfValues 為 1。

EncoderParameter(Encoder, Int32, Int32, Int32)
已淘汰.
已淘汰.
已淘汰.

初始化一個新的類別實例 EncoderParameter ,包含指定的 Encoder 物件和三個整數,分別指定值的數量、值的資料型態,以及指向物件中儲存 EncoderParameter 值的指標。

EncoderParameter(Encoder, Int32, Int32)

初始化一個包含指定Encoder物件及一對 32 位元整數的新類別實例EncoderParameter。 這對整數代表一個分數,第一個整數為分子,第二個整數為分母。 將屬性設 ValueTypeValueTypeRational,並將屬性設 NumberOfValues 為 1。

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

初始化一個新的類別實例 EncoderParameter ,包含指定的 Encoder 物件及四個 32 位元整數陣列。 這四個陣列代表一個有理數範圍的陣列。 有理區間是指從最小分數值到最大分數值的所有分數集合。 將屬性設 ValueTypeValueTypeRationalRange,並將屬性設 NumberOfValues 為陣列中 numerator1 元素的數量,必須與其他三個陣列的元素數相同。

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

初始化一個新的類別實例 EncoderParameter ,包含指定的 Encoder 物件及兩個 32 位元整數陣列。 這兩個陣列代表一個分數陣列。 將性質設 ValueTypeValueTypeRational,並將性質設 NumberOfValues 為陣列中 numerator 元素的數量,必須與陣列中的 denominator 元素數相同。

EncoderParameter(Encoder, Int64, Int64)

初始化一個包含指定Encoder物件與一對 64 位元整數的新類別實例EncoderParameter。 整數對代表一個整數範圍,第一個整數是該範圍內最小的數字,第二個整數是該範圍內最大的數字。 將屬性設 ValueTypeValueTypeLongRange,並將屬性設 NumberOfValues 為 1。

EncoderParameter(Encoder, Int64)

初始化一個新的類別實例 EncoderParameter ,使用指定的 Encoder 物件和一個 64 位元整數。 將屬性設 ValueTypeValueTypeLong (32位元),並將屬性設 NumberOfValues 為1。

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

初始化一個新的類別實例 EncoderParameter ,包含指定的 Encoder 物件及兩個 64 位元整數陣列。 這兩個陣列代表一個整數範圍的陣列。 將性質設 ValueTypeValueTypeLongRange,並將性質設 NumberOfValues 為陣列中 rangebegin 元素的數量,必須與陣列中的 rangeend 元素數相同。

EncoderParameter(Encoder, Int64[])

初始化一個新的類別實例 EncoderParameter ,使用指定的 Encoder 物件和一個 64 位元整數陣列。 將屬性設 ValueTypeValueTypeLong (32-bit),並將屬性設 NumberOfValues 為陣列中的元素數量。

EncoderParameter(Encoder, String)

初始化一個新的類別實例 EncoderParameter ,使用指定的 Encoder 物件和字串。 字串在儲存在 EncoderParameter 物件中之前,會先轉換成空終端的 ASCII 字串。 將屬性設 ValueTypeValueTypeAscii,並將屬性設 NumberOfValues 為包含 NULL 終止子的 ASCII 字串長度。

屬性

名稱 Description
Encoder

取得或設定 Encoder 與此 EncoderParameter 物件相關聯的物件。 該Encoder物件封裝了全域唯一識別碼(GUID),用以指定該物件中所儲存EncoderParameter參數的類別(例如 QualityColorDepth, 或Compression)。

NumberOfValues

取得該 EncoderParameter 物件中儲存值陣列中的元素數量。

Type

取得此 EncoderParameter 物件中儲存值的資料型態。

ValueType

取得此 EncoderParameter 物件中儲存值的資料型態。

方法

名稱 Description
Dispose()

釋放此 EncoderParameter 物件所使用的所有資源。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
Finalize()

允許 EncoderParameter 物件嘗試釋放資源並執行其他清理操作,然後再透過 EncoderParameter 垃圾回收回收。

GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetType()

取得目前實例的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
ToString()

傳回表示目前 物件的字串。

(繼承來源 Object)

適用於

另請參閱