Condividi tramite


Procedura: determinare i parametri supportati da un codificatore

Aggiornamento: novembre 2007

È possibile modificare i parametri delle immagini, come ad esempio la qualità e il livello di compressione, ma è necessario conoscere i parametri supportati da un codificatore di immagini specificato. La classe Image fornisce il metodo GetEncoderParameterList in modo da determinare quali parametri di immagini sono supportati per un codificatore particolare. Specificare il codificatore con un GUID. Il metodo GetEncoderParameterList restituisce una matrice di oggetti EncoderParameter.

Esempio

Nel codice di esempio seguente vengono illustrati i parametri supportati per il codificatore JPEG. Utilizzare l'elenco delle categorie di parametri e i GUIDs associati nei cenni preliminari sulle classi Encoder per stabilire la categoria per ogni parametro.

Private Sub GetSupportedParameters(ByVal e As PaintEventArgs)
    Dim bitmap1 As New Bitmap(1, 1)
    Dim jpgEncoder As ImageCodecInfo = GetEncoder(ImageFormat.Jpeg)
    Dim paramList As EncoderParameters = _
    bitmap1.GetEncoderParameterList(jpgEncoder.Clsid)
    Dim encParams As EncoderParameter() = paramList.Param
    Dim paramInfo As New StringBuilder()

    Dim i As Integer
    For i = 0 To encParams.Length - 1
        paramInfo.Append("Param " & i & " holds " & _
            encParams(i).NumberOfValues & " items of type " & _
            encParams(i).Type.ToString() & vbCr & vbLf & "Guid category: " & _
             encParams(i).Encoder.Guid.ToString() & vbCr & vbLf)
    Next i

    e.Graphics.DrawString(paramInfo.ToString(), _
       Me.Font, Brushes.Red, 10.0F, 10.0F)
End Sub

Private Function GetEncoder(ByVal format As ImageFormat) As ImageCodecInfo

    Dim codecs As ImageCodecInfo() = ImageCodecInfo.GetImageDecoders()

    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
private void GetSupportedParameters(PaintEventArgs e)
{
    Bitmap bitmap1 = new Bitmap(1, 1);
    ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
    EncoderParameters paramList = bitmap1.GetEncoderParameterList(jpgEncoder.Clsid);
    EncoderParameter[] encParams = paramList.Param;
    StringBuilder paramInfo = new StringBuilder();

    for (int i = 0; i < encParams.Length; i++)
    {
        paramInfo.Append("Param " + i + " holds " + encParams[i].NumberOfValues +
            " items of type " +
            encParams[i].ValueType + "\r\n" + "Guid category: " + encParams[i].Encoder.Guid + "\r\n");

    }
    e.Graphics.DrawString(paramInfo.ToString(), this.Font, Brushes.Red, 10.0F, 10.0F);
}

private ImageCodecInfo GetEncoder(ImageFormat format)
{

    ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();

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

Compilazione del codice

L'esempio presenta i seguenti requisiti:

Vedere anche

Attività

Procedura: elencare i codificatori installati

Concetti

Tipi di bitmap

Altre risorse

Utilizzo di codificatori e decodificatori di immagini nel codice gestito GDI+